如果我在構造函數中使用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