为什么我们应该重载/覆盖新的和删除?

可能重复:
有什么理由重载全局新建和删除?

为什么我们应该在C ++中重载/重写new和delete?

给我一个例子,我们应该重载/重写new,new [],delete或delete []。


这听起来有点像家庭作业。 尽管如此,我还有两个用途:

  • 为了剖析目的。 例如,我们把它作为一个穷人的valgrind在图书馆中用来追踪内存泄漏。
  • 为您的对象实现自定义分配器(例如池分配器)。 通常我会为此实现一个allocator

  • 提供分配/取消分配内存的实现。 新/删除非常一般。 当你知道你的应用程序将如何使用内存时,你可以提供更高效的新/删除版本。 例如,如果你使用了很多小物体,那将是非常简单的。

    另一个用法是提供内存泄漏检测。

    这不是经常使用的机制 - 至少在我的经验中。

    链接地址: http://www.djcxy.com/p/73041.html

    上一篇: Why should we overload/override new and delete?

    下一篇: What are the reasons to override new and delete operator for a specific class?