leetcode 237题 即下图21行,不理解为什么要写node = NULL;node不是被删除了吗,删除意味着什么,难道null还需要保存在节点里吗
来源:5-5 不仅仅是穿针引线 Delete Node in a Linked List
慕粉1517159895
2017-07-14
写回答
1回答
-
liuyubobobo
2017-07-15
在C++中,delete一个指针,表示将指针所指向的空间释放,但是这个指针本身还是会存储这个地址。此时访问这个地址是危险的(不一定报错,但是此时这个地址将来可能另作他用,而错误的访问这个指针的内容将会造成非常难以察觉的错误)。一般习惯在删除一个指针所指向的空间后,显示地为这个指针本身赋值为NULL。通常认为这样更安全。因为此时错误的访问这个指针,一定会因为访问了空指针而程序直接中断,使得容易找到错误的根源,但这不是必须的,属于一种编程习惯。
在网上搜一搜,还会有很多人探讨,C++标准应该自动将delete掉所指向空间的指针赋值为空。很有意思,比如这个:)
https://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null
加油!
392019-07-29
相似问题
leetcode 237 删除节点
回答 1
老师,还是那个问题
回答 1