谁说释放内存就是调用析构函数,调用析构函数的目的是为了在释放内存前做些处理,比如 class A { int a; int c; }; class B { int b; A *pA; B() { pA = new A; } ~B() { delete pA; } } 如果你new B;申请一块内存,然后你delete后,如果你不在析构函数中delete pA的话,只是释放了B中的int b;A *pA;你申请的pA指向的内存并不会被释放 [解决办法]
#include <iostream> using namespace std; int main() { void *p=malloc(4); int a=5; p=&a; cout<<*reinterpret_cast<int*>(p)<<endl; free(p); return 0; } 代码贴上一运行,为什么会卡住不动