正确重载新/删除新[] /删除[]

Ham*_*aya 5 c++ memory-management

这是我上一个问题的后续跟进,

使用malloc初始化类

关于这个问题的接受的答案是有效的,并且给了我关于avr-gcc的新/删除,这里是问题,但是我的重载新删除会对常规gcc造成严重破坏,重载新删除的正确方法是什么,所有我的类派生自一个共同的基础class理想情况下我想覆盖我的对象的新删除,所以它不会与stl stdlib等混乱.

iam*_*ind 8

'new'和'delete'可以在公共Object基类中重载.因此,这仅适用于该层次结构.

class Object {
public:
  void* operator new (size_t size);
  void operator delete (void *p);
};

class Derived : public Object {
// uses the above versions of new/delete
};
Run Code Online (Sandbox Code Playgroud)

[注意:这对你来说是一个额外的好处,因为你的所有课程都来自一个普通的Object课程(如你的问题和链接中所提到的)]

  • 抱歉,是我的错.:) (2认同)