美文网首页
Effective C++ 学习备忘录八

Effective C++ 学习备忘录八

作者: 仰简 | 来源:发表于2022-04-21 10:28 被阅读0次

定制 new 和 delete

  • 条款 49 - 了解 new-handler 的行为
  • set_new_handler 允许用户指定一个函数,在内存分配无法获得满足时调用
  • Nothrow new 是一个颇为局限的工具,因为它只适用于内存分配;后继的构造函数调用还是可能抛出异常。
  • 条款 50 - 了解 new 和 delete 的替换时机
  • 有许多理由需要写个自定义的 new 和 delete,包括改善效能,对 heap 运用错误进行调试以及收集 heap 使用信息等。
  • 条款 51 - 编写 new 和 delete 需固守常规
  • operator new 应该内含一个无穷循环,并在其中尝试分配内存,如果无法满足内存需求,就该调用 new_handler。它也应该有能力处理 0 bytes 申请,Class 专属版本还应该能够处理 “比正确大小更大的(错误)申请”。
  • operator delete 应该在收到 Null 指针时不做任何可,Class 专属版本还应该能够处理 “比正确大小更大的(错误)申请”。
  • 条款 52 - 写了 placement operator new 也要写 placement operator delete
  • 当你编写一个 placement operator new ,请确定也写出对应的 placement operator delete。如果没有这样做你的程序可能会发生隐微或者时断时续的内存泄漏。
  • 当你声明 placement new 和 placement delete,请确定不要无意识地遮掩他们的正常版本。

相关文章

  • Effective C++ 学习备忘录八

    定制 new 和 delete 条款 49 - 了解 new-handler 的行为 set_new_handle...

  • 要读的书书名

    1, 重读《Effective C++》《 More Effective C++》《by Scott Meye...

  • Effective C++ 学习备忘录五

    实现 条款 26 - 尽可能延后变量定义式的出现时间 尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程...

  • Effective C++ 学习备忘录四

    设计与声明 条款 18 - 让接口容易被正确使用,不易被误用 好的接口容易被正确使用,不容易被误用。你应该在你的所...

  • Effective C++ 学习备忘录六

    继承与面向对象设计 条款 32 - 确定你的 public 塑模出 is-a 关系 "public继承" 意味 i...

  • Effective C++ 学习备忘录一

    让自己习惯 C++ 条款 01 - 视 C++ 为一个联邦 请记住 C++ 高效编程守则视状况而变化,取决你用 C...

  • Effective C++ 学习备忘录二

    构造 / 析构 / 赋值运算 条件 05 - 了解 C++ 默默编写并调用哪些函数 编译器可以暗自为 class ...

  • Effective C++ 学习备忘录三

    资源管理 条款 13 - 以对象管理资源 为了防止资源泄漏,请使用 RAII 对象,它们在构造函数中获取资源,在析...

  • Effective C++ 学习备忘录七

    模型与泛型编程 条款 41 - 了解隐式接口和编译期多态 classes 和 templates 都支持 Inte...

  • Effective C++ 学习备忘录九

    杂项讨论 条款 53 - 不要轻忽编译器的警告 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告...

网友评论

      本文标题:Effective C++ 学习备忘录八

      本文链接:https://www.haomeiwen.com/subject/mbxeertx.html