如果新的重载但未加载相应的删除会发生什么?

Joh*_*_sa 4 c++ new-operator

任何人都可以解释如果新的重载但在C++中没有加载相应的删除会发生什么?

Ker*_* SB 5

当对象构造抛出异常时,这只是一个问题,并在C++ 11 5.3.4/18中进行了描述:

如果找不到明确的匹配解除分配函数,则传播异常不会导致释放对象的内存.[注意:当被调用的分配函数不分配内存时,这是合适的; 否则,很可能导致内存泄漏. - 尾注]

例:

T * p = new (true, 'x', Blue) T("Jim");
Run Code Online (Sandbox Code Playgroud)

如果是Tthrows 的构造函数,我们需要operator delete(void *, bool, char, enum Color)在命名空间作用域或作为静态成员的重载,T如果此函数不存在,则不调用释放函数.

正如笔记所说,在放​​置新功能的情况下,基本上是无操作,这可能不是问题.但是,如果分配函数执行非常重要的工作,那么就没有匹配的清理功能.