我有一个类,我正在重载new和删除(这些从内存池获取和返回内存).令我感到沮丧的是,我重载的类仍然在调用delete重载函数之前调用了析构函数.我怎么能阻止这个?
class Message { ~Message() { ... } void* operator new(std::size_t sz) { ... } void operator delete(void* ptr) { ... } };
编辑:
我认为类的成员会被破坏但是破坏者不会释放记忆,这是正确的; delete函数拥有这个责任,在这种情况下,我可以阻止内存被释放?
解决方法
破坏和解除分配是两个正交的事情,一个不应该抑制另一个.对于在堆栈上创建的类的实例,您会怎么做?没有清理他们的资源?你试图打破一个非常有用的
RAII概念.