<分区>
在 C 或 C++ 中,当我们删除一些指针时,它只是释放内存,但不会将指针设置为 0。由于我们无法检查指针的有效性,因此程序员更容易检查是否为空如果在释放内存后指针设置为 0,则指针的指针。
我只是想知道为什么只执行“删除”以释放内存。
<分区>
在 C 或 C++ 中,当我们删除一些指针时,它只是释放内存,但不会将指针设置为 0。由于我们无法检查指针的有效性,因此程序员更容易检查是否为空如果在释放内存后指针设置为 0,则指针的指针。
我只是想知道为什么只执行“删除”以释放内存。
最佳答案
“Since we can not check the validity of a pointer, it would have been easier for the programmer to check the nullness of the pointer if the pointer is set to 0 after freeing the memory.”
检查 null 值可能会隐藏错误,同时增加代码大小和复杂性,并给人一种错误的安全感。不能保证指针值(在归零之前)没有被复制到其他地方。此外,这可以防止按值删除,这是库(如 OpenCV)的一个主要烦恼,这些库被误导,提供无效删除操作。
不要使用这种适得其反的做法,而是使用确保正确清理和防止无效指针的技术,例如使用适当的智能指针。
关于c++ - delete 不会将 0 赋值给指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778423/