Почему мой указатель не NULL? - PullRequest
3 голосов
/ 11 мая 2011

У меня есть связанный список семей.Я удаляю одного из дочерних братьев и сестер следующим образом.

p->myWife->myChildren=p->myWife->myChildren->mySibling; //makes the sibling the child so the list is not broken when deleting
delete p->myWife->myChildren->mySibling;

и позже я печатаю атрибуты дочерних / родных братьев, основанные на этом

if(p->myWife->myChildren->mySibling!=NULL){
 print the childs attributes
}

Всякий раз, когда я печатаю, он печатает странное числодля родного брата (я предполагаю, что это адрес памяти) Что мне нужно сделать, чтобы указатель был нулевым?

Ответы [ 3 ]

10 голосов
/ 11 мая 2011

Удаление указателя не устанавливает его в ноль.Он просто освобождает память, на которую указывает указатель.Чтобы установить его в NULL, вам нужно будет установить его в NULL самостоятельно.

p->myWife->myChildren->mySibling = NULL /*defined to be zero */;
3 голосов
/ 11 мая 2011

удаление освобождает память, на которую ссылается указатель.Чтобы указатель был NULL, присвойте ему NULL!

p->myWife->myChildren->mySibling = NULL;
2 голосов
/ 11 мая 2011

После удаления установите указатель на NULL

p->myWife->myChildren->mySibling = NULL;
...