Boolan(博览网)——C++面向对象高级编程(下)(第五周作

2017-11-19  本文已影响0人  Michael_SR

1. 构造函数和析构函数的调用过程

2. Apple 中重载一般的 operator new 和 operator delete (无异常)

3. Apple 中重载一般的 operator new 和 operator delete (构造有异常)

当创建对象产生异常时,会对对象调用 delete 。其中销毁对象时,只调用了父类的析构函数,然后调用 operator delete 来释放申请的内存。异常对象在异常处理完成后再被销毁。

4. Apple类中 placement new 调用的 ctor 有异常

当 placement new 所调用的 ctor 抛出异常,会调用相对应的 operator (placement) delete 来处理异常,其用途是释放与之对应的 placement new 分配所得的内存。

5. Apple类中 placement new 调用的 ctor 无异常

当 placement new 所调用的 ctor 无异常,会调用operator delete(void* ptr) 来处理异常。

6. Apple类中 placement new 调用的 ctor 有异常(无对应 delete )

当 placement new 所调用的 ctor 抛出异常,而没有与之对应的 operator (placement) delete 来处理异常,则默认不进行异常处理。因此保险起见,placement new 和 placement delete 必须要成对出现,否则就会产生内存泄漏。

程序运行结果:

上一篇 下一篇

猜你喜欢

热点阅读