我有一个单独的类,如下所示:静态分配的内存释放
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或其他东西中删除一个文件),唯一的区别就是可能会有所不同。假设情况并非如此,最简单的解决方案就是忽略问题,因为它不会造成任何问题。 –