C++:如果我重载new运算符,我是否也必须重载delete运算符?

pas*_*sha 9 c++ new-operator dynamic-memory-allocation delete-operator

我正在阅读关于SO的问题,在其中一个答案中,它被提到:

如果找不到明确的匹配解除分配函数,则传播异常不会导致释放对象的内存.

所以,如果我只是重载我的new运算符而不是delete运算符,那么是否delete会创建并调用任何默认运算符; 或者,我是否还必须delete明确地编写运算符.

Chr*_*odd 8

这意味着如果使用额外参数重载operator new,而不使用额外参数重写相应的delete,如果构造函数中发生异常,则不会调用delete运算符.另一方面,如果你正在重载基本的new(没有额外的参数),并且发生异常,那么将调用不带额外参数的delete,如果你没有重载它,那将是默认的operator delete.