leetcode 237题 即下图21行,不理解为什么要写node = NULL;node不是被删除了吗,删除意味着什么,难道null还需要保存在节点里吗

来源:5-5 不仅仅是穿针引线 Delete Node in a Linked List

慕粉1517159895

2017-07-14

http://szimg.mukewang.com/596870910001e42605370412.jpg

写回答

1回答

liuyubobobo

2017-07-15

在C++中,delete一个指针,表示将指针所指向的空间释放,但是这个指针本身还是会存储这个地址。此时访问这个地址是危险的(不一定报错,但是此时这个地址将来可能另作他用,而错误的访问这个指针的内容将会造成非常难以察觉的错误)。一般习惯在删除一个指针所指向的空间后,显示地为这个指针本身赋值为NULL。通常认为这样更安全。因为此时错误的访问这个指针,一定会因为访问了空指针而程序直接中断,使得容易找到错误的根源,但这不是必须的,属于一种编程习惯。


在网上搜一搜,还会有很多人探讨,C++标准应该自动将delete掉所指向空间的指针赋值为空。很有意思,比如这个:)


https://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null


加油!

3
9
算法请爱我emmm
看你们的讨论,我对指针内存的了解更深入啦! 为你们点赞
2019-07-29
共9条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程