<分区>
Possible Duplicate:
Why Free crashes when called twice
我只想知道当我们删除已经被删除的指针时到底发生了什么,是什么原因导致崩溃的?
标签 c++
最佳答案
很难准确预测会发生什么——这在一定程度上取决于编译器,而在很大程度上取决于标准库。正式来说,这只是未定义的行为,所以几乎任何事情都有可能发生。
最常见的情况是堆会被丢弃。它可能不会检查删除的内容是否有效,因此当它在同一地址获得两个 block 时,它可能(例如)仍将它们视为两个单独的 block ,因此当您稍后分配内存时,您可能会两次获得相同的内存块。在某些其他情况下,它可能(例如)只是补充一点来说明该内存块是否正在使用,所以第二次删除它时,实际上最终将其标记为再次使用,这样内存就可以永远不会再分配,你基本上只是造成了泄漏。
关于c++ - 为什么两次删除指针会导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752057/