为什么在分配了'new'的指针上调用free()会导致堆损坏?

cra*_*zyx 6 c++ memory heap

它是否真的适用于某些编译器/机器,但在其他编译器/机器上它会导致堆损坏和崩溃?

有没有人对隐藏的内容有什么了解?

nat*_*ose 18

C++想要在使用时调用对象上的析构函数delete,但是传递它free不允许这种情况发生.如果对象包含其他对象,则也不会调用这些对象的析构函数.如果对象中有指针,那么那些就不会被释放.

此外C++的newdelete实际上可能请求的内存从一个更大的量malloc,并使用额外的簿记(如存储的析构函数的地址),所以你传递给指针free就不会实际上是一个被malloc编.