C++-new和delete操作符的重载

发布于 2016-12-16 22:53:38 字数 87 浏览 1233 评论 3

在《C++ Primer》中看到关于操作符new和delete的重载,那么我们应该在什么时候重载这两个操作符呢?什么时候使用默认的new和delete操作符呢?

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

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

发布评论

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

评论(3

晚风撩人 2017-04-20 11:26:50

补充两种情况
1 记录heap的分配和释放,可用于检测内存泄露
2 通过VirtualAlloc,VirtualProtect和VirtualFree实现内存越界检查(只适用Windows)

浮生未歇 2017-04-19 07:58:44

一般来讲C++本身所提供的new/delete对内存的管理和操作已经相当强并且完美,在一般的情况下并不需要对这两个操作符进行重载来接管内存管理。但是在嵌入式系统等内存资源相对紧张,并且经常需要创建释放对象的环境中为了避免堆破碎或者要求较高的内存效率时需要对new和delete进行重载(可以这样设想,如果独立分配一个heap,在这个heap里都是相同的对象在分配和释放,那么即便是删除掉一个对象那么释放出来的内存空间正好供下一个分配的对象使用,因此可以避免掉内存碎片的问题)。

晚风撩人 2017-04-10 12:45:05

一个典型的场景是你用new实现一个内存池,只在第一次new的时候调用原生new出一块空间,以后的new只是从这块空间中获取空间。

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