C++ 重写特定类的new和delete运算符的原因是什么?

C++ 重写特定类的new和delete运算符的原因是什么?,c++,memory-management,overriding,new-operator,C++,Memory Management,Overriding,New Operator,可以为特定类重写动态内存分配运算符-new和delete。我可以定义一个不同于Windows上C++运行时间提供的默认内存分配方案。我有几个与此相关的问题: 重写特定类的new和delete运算符是否可以移植,以便它也可以在unix上工作?是否是C++标准的一部分? 在哪些情况下可能需要覆盖特定类的内存分配运算符?我能想到的唯一一种情况是跟踪内存分配是否泄漏 如果需要自动使用不同的内存,例如内存池或共享内存 而且。。。还有许多其他原因:是的,它是可移植的,但要注意,MS编译器处理的“nothro

可以为特定类重写动态内存分配运算符-new和delete。我可以定义一个不同于Windows上C++运行时间提供的默认内存分配方案。我有几个与此相关的问题:

  • 重写特定类的new和delete运算符是否可以移植,以便它也可以在unix上工作?是否是C++标准的一部分?

  • 在哪些情况下可能需要覆盖特定类的内存分配运算符?我能想到的唯一一种情况是跟踪内存分配是否泄漏


  • 如果需要自动使用不同的内存,例如内存池或共享内存


    而且。。。还有许多其他原因:

    是的,它是可移植的,但要注意,MS编译器处理的“nothrow”部分与ANSI标准不同——因此被烧坏了


    至于为什么,是的,跟踪内存、跟踪泄漏、跟踪分配都很好,但这些都可以在全球范围内完成。对于VRAM分配之类的东西,您可以过度使用new/delete,但我通常看到在不同的函数中调用这类东西。重写new/delete的最大原因是,如果您对内存系统的使用方式有更好的了解,并且能够比供应商提供的new/delete的通用版本更高效地定制功能。小对象分配在我的脑海中是一种经常被忽略或执行不力的东西,以及为了调试目的而在分配中要传递多少信息。

    如果您想以一种不寻常的方式对齐收件人。例如,前几次我将收件人的地址改为8,并将最后三位用于其他目标


    如果您想在预初始化的内存中找到新的类实例。例如,如果要从空节点列表中向列表中添加新节点。

    似乎您首先假定它是Windows功能,然后询问它是否可移植到标准?似乎是一种倒退的方式!可能是@Tomalak的复制品-我没有假设任何东西。什么陈述让你感到困惑?我可以重温一下。