C++中删除一个指针delete p的工作原理

By Minidxer | October 20, 2007

C++ 的debug跟踪的时候,delete操作时没办法跟进去的。看了一下delete的代码,发现delete p 操作做了两个处理:调用析构函数和释放内存。


假设是Foo*类型的,delete p的实际代码看起来应该是这样的:

if (p != NULL) {
p->~Foo();
operator delete(p);
}

通过p->~Foo()语句调用 p指向的Foo对象的析构函数,operator delete(p)语句则调用内存释放语句 void operator delete(void* p),类似于free(void* p)

Topics: 程序开发相关 | Tags: , , , , ,

Search Posts

Archives

Sponsored Ads