c++ - delete 不会将 0 赋值给指针

标签 c++ c

<分区>

在 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/

相关文章:

c++ - 钩子(Hook)函数后调用原函数

c - Else 语句在 strcmp 中返回错误结果(比较哈希值)(已更新)

c - 从 C 调用 Fortran 函数时出现 EXC_BAD_ACCESS

c - 在 simulink 中运行用户定义的 block 时 Matlab 崩溃

c - 在 g_signal_connect 中将整数作为 gpointer 传递

c++ - 对字符数组中的单词进行排序

c++ - ffmpeg 包含问题 - 缺少某些功能

c++ - 修改 saddleback 搜索以处理重复项

c - Max485 芯片无法在 3v3 逻辑上工作,但能够在 5v arduino 引脚上工作,即使仅通过我的手指连接

c++ - 如何在类之间共享昂贵的计算?