如果我在构造函数中使用new分配一些内存,如果在分配内存窗体构造函数后抛出异常,内存是否会被回收或内存泄漏?如果我从构造函数中抛出异常,构造函数中的释放内存会发生什么?
class A
{
public:
A()
{
p = new int(4);
throw 1;
}
~A()
{
delete p;
}
private:
int *p;
};
如果你这样做*没有抛出异常,你认为会发生什么?你有一个没有“删除”的“新” - 这是不好的。 – 2014-09-22 19:01:53
这是写入这是一个内存泄漏等待*无论抛出异常。为了解决你的问题,在构造函数的初始化程序中使用'std :: vector p;',然后'p(4)'。然后抛出你想要的。 [指针不应拥有资源](https://dl.dropboxusercontent.com/u/6101039/Modern%20C%2B%2B.pdf)。 –
WhozCraig
2014-09-22 19:03:12
好的约瑟夫。我添加了析构函数 – kadina 2014-09-22 19:05:10