Показать сообщение отдельно
Старый 11.08.2011, 14:10   #19
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: С++ и Блитц Параллели

object = 0;
 delete(object);
object = 0; убрать. Потому что в теле оператора delete стоит проверка на нулевой аргумент, который приводит к простому выходу из тела оператора. Поэтому кажется, что все работает.

if (pCurrent->id ==2)
 {
 pCurrent->age = 666;
 PersonDeleteObject(pCurrent);
 }
заменяешь на
if (pCurrent->id ==2)
{
	pCurrent->age = 666;
	Person* toDestroy = pCurrent;
	pCurrent = pCurrent->pNext;
	PersonDeleteObject(toDestroy);
}
Почему именно так - разбирайся сам с дебаггером, коли решил глубоко изучать.

ЗЫ. return писать не надо, если функция возвращает void.
ЗЗЫ. Ты что, действительно, пишешь с таким форматированием (точнее, без него)?!
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Vadimich (11.08.2011)