构造函数异常和动态分配

时间:2013-12-17 18:19:08

标签: c++

我想知道对象是否是动态分配的,构造函数是否抛出异常,是否仍然需要删除该对象?

class Doom
{
public:

   Doom() { throw 0; }

private:

   int pad;

};

int main()
{
    try
    {
        // memory is allocated for Doom but construction fails
        // is the memory deallocated if construction fails here ?
        Doom* doom = new Doom(); 
    }
    catch(int ex)
    {
        // ...
    }
}

1 个答案:

答案 0 :(得分:4)

没有。没有什么可以删除,因为对象永远不会被构造。编译器将负责释放已分配的内存。