关于new操作符的问题。
假如用new操作符创建一个对象时,这个对象的构造函数抛出一个异常,而创建这个对象的代码catch了这个异常,那么请问在C++抛出异常进行UnWind处理过程中会不会将new操作符之前用malloc分配的那块内存释放。其程序示例如下:
class CExp {
CExp() {}
~CExp() {}
};
class CTest {
CTest() { throw CExp(); }
~CTest() {}
}
int main()
{
CTest * pTest = NULL;
try {
pTest = new CTest;
} catch ( CExp * pe ) {
// 此时pTest为NULL,那么new操作符为CTest分配的内存
// 是否已经正常释放;如果没有的话,我现在又该怎样
// 释放它呢?请高手指教。
}
}