用户关闭mfc应用程序后,是否必须释放内存?

时间:2014-05-05 20:19:13

标签: c++ mfc

当用户关闭mfc应用程序时,它会自动释放其内存吗?

这是一个例子。

myapplication.h:

class myapplication: public CDialog
{
//declaring an mfc application

public:
bool isopen();// a flag which tells if the application is opened
}

mainclass.h:

#include myapplication.h
class mainclass
{
private:
myapplication* pmyapp;
public:
int openmyapp();
}

mainclass.cpp:

int mainclass::opendialog()
{

   if(!pmyapp->isopen()) // this means the application was opened then closed by the user, this seems to work fine
   {
     // this seems to be important to make sure of a proper closing and deallocation of the memory
     delete pmyapp;
     pmyapp = NULL;

   }
   pmyapp = new myapplication();
   pmyapp->Create(myapplication::IDD);
   pmyapp->ShowWindow(SW_SHOW);
}

所以,如果我多次打开对话框,我会遇到DebugBreak()......

2 个答案:

答案 0 :(得分:1)

您的操作系统(可能)会释放您忽略的任何内存。但它仍然是一个坏主意,因为如果你不释放你分配的内存并且你的应用程序运行了很长时间,迟早你就会用完。即使它只是我们正在讨论的一次性分配,如果您习惯在关机时忽略一堆内存泄漏消息,那么您将错过更重要的内容。

此外,正如评论中所提到的,如果你没有delete类对象,那么即使操作系统最终会释放它们占用的内存,它们的析构函数也永远无法运行。

答案 1 :(得分:1)

如果您的应用程序在关闭该对话框后正在运行,则必须销毁对象。

如果应用程序正在完成,您也应该销毁它们。但是,任何现代操作系统都会清理整个分配的内存。