高效C++:定制new和delete

  内存的申请和释放,C++从语言级别提供了new和delete关键字,因此需要了解和熟悉其中的过程。

了解new-handler的行为

  • set_new_handler可以指定一个函数,当申请内存失败时调用,如果调用指定的函数后,内存还是不够,就会循环调用

  • 使用set_new_handler指定函数一定要小心

了解new和delete的合理替换时机

  • 定制new和delete是有必要的

编写new和delete时需要固守常规

  • operator new应该内含一个无穷循环,并在循环中尝试分配内存,如果无法满足就需要调用new-handler(里面的操作可能释放内存),且有能力处理0字节的申请

  • operator delete的入参为NULL时,不做任何处理

提供了placement new就需要提供placement delete

  • 任何情况下new和delete都需要成对出现

不要轻易忽略编译器的警告

  • 记住一句话:现在忽略的告警,就是你将来通宵的伏笔

让自己熟悉标准程序库

  • 直接撸源码,你将受益无穷

让自己熟悉开源代码

  • 多阅读开源代码,只有好处没有坏处

原文地址:https://www.cnblogs.com/chusiyong/p/11453345.html