当对象构造抛出异常时,这只是一个问题,并在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如果此函数不存在,则不调用释放函数.
正如笔记所说,在放置新功能的情况下,基本上是无操作,这可能不是问题.但是,如果分配函数执行非常重要的工作,那么就没有匹配的清理功能.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |