在編譯我的代碼時,我在代碼中發現了一個分段錯誤,但實際上並不瞭解它們。 我不在尋找我的代碼的答案更多的東西,這將幫助我瞭解什麼是分段錯誤,以及爲什麼發生。可以參考,這裏是我正在研究的代碼(我知道它不是一個很好的解決方法,但我仍然在學習)。分段錯誤
void PhoneBook::verifyAllContacts() {
Contact* listOfNumbers;
listOfNumbers = new Contact[numContacts];
int tempHoldCount = 0;
for(int i = 0; i < numContacts; i++) {
if(listOfNumbers[i].verifyPhoneNumber() == true && listOfNumbers[i].getEmergencyContact()->verifyPhoneNumber() == true)
tempHoldCount++;
}
Contact* validContactList;
validContactList = new Contact[tempHoldCount];
for(int z = 0; z < tempHoldCount; z++) {
for(int s = 0; s < numContacts; s++) {
if(listOfNumbers[s].verifyPhoneNumber() == true && listOfNumbers[s].getEmergencyContact()->verifyPhoneNumber() == true)
validContactList[z] = listOfNumbers[s];
}
}
delete listOfNumbers;
}
你想做什麼? 'validContactList [z] = listOfNumbers [s];'這行看起來沒有什麼用處,因爲'validContactList'是一個函數範圍的符號;即當函數返回時它將被銷燬,留給你一個內存泄漏,包含你用'validContactList = new Contact [tempHoldCount];創建的所有聯繫人「 – Eric