這是內存泄漏?應該美孚()是一個默認的構造函數的類主要完成後C++內存泄漏?
int main()
{
Foo * p = new Foo();
return 0;
}
我想是因爲該應用程序儘快結束爲主要目的,並推測操作系統釋放所有它不是泄漏一旦完成,該應用程序的資源。這個假設是否正確?
這是內存泄漏?應該美孚()是一個默認的構造函數的類主要完成後C++內存泄漏?
int main()
{
Foo * p = new Foo();
return 0;
}
我想是因爲該應用程序儘快結束爲主要目的,並推測操作系統釋放所有它不是泄漏一旦完成,該應用程序的資源。這個假設是否正確?
是的,在您的程序中,它是一個泄漏。您沒有取消分配您的Foo
。
無論如何,你的操作系統是否會回收進程的內存?也許,也許不是。 Windows肯定會重新使用內存。
但是,如果您只想爲您的系統和系統提供通用超實用的答案,那麼您可能會逃避這一點。
但是,在任何情況下,間接資源都不會被您的操作系統神奇地釋放。 Foo
的析構函數可能涉及多於內存解除分配。
如果你想有一個C++的答案,或者是一個有可取之處的代碼的完整性方面,智能化設計(笑)坦率地說只是良好的生活習慣,沒有。當有人要求堅實的實際理由,他們必須找到原因做delete
,當被迫提供例如文件句柄,網絡連接和工作者線程的例子時,很難證明它是合理的。但基本的常識意味着,所有這些問題都是自動處理的,,而不必單獨命名每個人,當你花費5秒的時間來摧毀你的物品,當你完成它們。
只是delete
而已。你沒有理由不這樣做。
是的,這對大多數操作系統都是正確的。 – Duck
'Foo p;'有什麼問題?然後,當您離開示波器時,該對象會自動銷燬。 – Brandin