为什么我们要重载/覆盖new和delete?

发布于 2024-12-02 21:25:20 字数 282 浏览 2 评论 0原文

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

我们为什么要这样做C++ 中的重载/覆盖 new 和删除?

举一个我们应该重载/覆盖 new、new[]、delete 或 delete[] 的情况的例子。

Possible Duplicate:
Any reason to overload global new and delete?

Why should we overload/override new and delete in C++?

Give me an example of situation in which we should overload/override new, new[], delete or delete[].

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

落叶缤纷 2024-12-09 21:25:20

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

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

This sounds a bit like a homework assignment. Nevertheless, here are two uses off the top of my head:

  • For profiling purposes. For instance, we use it in a library as a poor-man’s valgrind to track memory leaks.
  • To implement a custom allocator (e.g. a pool allocator) for your objects. Usually I’d implement an allocator for this, though.
孤千羽 2024-12-09 21:25:20

提供分配/释放内存的实现。 new/delete 很一般。当您知道应用程序将如何使用内存时,您可以提供更高效的 new/delete 版本。例如,如果您使用很多小物体,那将非常简单。

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

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

To provide your implementation of allocating/deallocating memory. new/delete are very general. When you know how your application is going to use memory you can provide more efficient version of new/delete. That would be very simple for example if you used a lot of small object.

Another usage would be to provide memory leak detection.

That's not very often used mechanism - at least in my experience.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文