什么意思是在C++中通过删除运算符'破坏'内存?

Zyg*_*tix 2 c++ memory

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

Mat*_*son 6

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

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

C和C++作为语言的目标是"只做必要的最小",因此典型的无内存不会覆盖"旧"内存.

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

因为在删除内存后你不应该使用内存,所以它并不重要.