c++ - C++ 中删除运算符的 'destroying' 内存是什么意思?

标签 c++ memory

我想知道在 C++ 中被“删除”运算符破坏的内存会发生什么。 以这种方式“破坏”内存是否意味着将给定的内存块设置为 0 或其他内容?

最佳答案

它正在销毁(如调用相关的析构函数)传递给 delete 的对象实例,然后“释放”内存以便它可以用于其他目的。

C++ 标准没有说明delete 后内存的内容是什么,当然也不能保证它为零或任何其他值——也不保证它不为零- 它可能被归零,它可能保留它之前的所有值,或者它的某些部分可能会被改变而其他部分保持不变。

C 和 C++ 作为语言的目标是“只做最少的必要工作”,因此典型的内存释放不会覆盖“旧”内存。

您当然可以在析构函数中使用代码在释放内存之前将其设置为零。

既然你不应该在内存被删除后使用它,那么这应该无关紧要。

关于c++ - C++ 中删除运算符的 'destroying' 内存是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16251539/

相关文章:

C++ init for循环内的多个类对象提供相同的内存地址?

c# - 如何定义和编码 BSTR* 类型

c++ - 使用 for 循环以相反的顺序将字符串值分配给 char 数组

c++ - cvResize 说明,OpenCV

C++ STL 字符串复制构造函数——总是深拷贝?

memory - GDB 'Addresses' 。这些是什么?

c++ - XMLHttpRequest 和证书错误

C++ union/结构位域实现和可移植性

memory - 即使在清除所有回滚历史后,tmux 仍使用 1G RAM

python - 线程内存使用量不断增加