При компиляции моего кода я наткнулся на ошибку сегментации в моем коде и действительно не понимаю их. Я не ищу ответа на свой код еще кое-что, что поможет мне понять, что такое ошибка сегментации, и почему это происходит. Для справки, однако, вот код, над которым я работал (я знаю, что это не хороший способ обойти это, но я все еще учился).Дефекты сегментации
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