【问题标题】:Why should we overload/override new and delete? [duplicate]为什么我们要重载/覆盖 new 和 delete? [复制]
【发布时间】:2011-11-11 03:02:57
【问题描述】:

可能重复:
Any reason to overload global new and delete?

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

举个例子说明我们应该重载/覆盖 new、new[]、delete 或 delete[]。

【问题讨论】:

标签: c++ memory-management overloading new-operator


【解决方案1】:

提供分配/释放内存的实现。新/删除非常笼统。当您知道您的应用程序将如何使用内存时,您可以提供更有效的 new/delete 版本。例如,如果您使用了很多小对象,那将非常简单。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • +1,代表poor-man’s valgrind :))
    猜你喜欢
    • 2011-08-30
    • 2012-12-23
    • 2012-04-15
    • 2011-07-03
    • 2014-12-12
    • 2019-05-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多