我有一個單獨的類,如下所示:靜態分配的內存釋放
class myClass
{
public:
static myClass* getInstance();
~myClass();
private:
static myClass* m_instance;
protected:
myClass();
};
和上面的類定義是:
myClass* myClass::m_instance = 0;
myClass::myClass()
{
}
myClass::~myClass()
{
}
myClass* myClass::getInstance()
{
if(m_instance == 0)
m_instance = new myClass;
return m_instance;
}
,因爲它是已知的,一旦內存與new
分配,它應該被釋放到堆以防止內存泄漏。在我的情況下,我已經分配了與析構函數無關的內存,因爲它是靜態的。 那麼,我該如何釋放內存分配?我應該釋放它嗎?這不會導致內存泄漏,因爲我也有其他類的對象在main()
中運行?
PS:getInstance()
方法返回的對象存在於main()
中,直到關閉應用程序爲止。
或者你可以註冊一個函數到'atexit()'函數。 –
假設你正在爲每個進程提供單獨的內存空間的操作系統上運行(即近期任何現代操作系統),這種情況下的「內存泄漏」是無足輕重的,因爲在main()返回之後,所有內存無論如何由操作系統回收的進程分配。只有〜myClass()需要在進程空間之外做一些清理工作(例如,從/ tmp或其他東西中刪除一個文件),唯一的區別就是可能會有所不同。假設情況並非如此,最簡單的解決方案就是忽略問題,因爲它不會造成任何問題。 –