CDialog::Create()创建非模态对话框框,若未销毁造会成内存泄露的解决办法

来源:互联网 发布:中国政治改革知乎 编辑:程序博客网 时间:2024/06/04 19:25

CDialog::Create()创建非模态对话框框,若未销毁造成内存泄露,代码如下:

CTestView类中有成员变量CSetDBSource* m_SetDBSource;,CSetDBSource的基类为CDialog,

m_SetDBSource = new CSetDBSource;
m_SetDBSource->Create(IDD_SETDB_DLG,this);

m_SetDBSource->ShowWindow(SW_SHOW);

程序退出时提示如下信息:

Detected memory leaks!
Dumping objects ->
e:\code\GMP\TestView.cpp(879) : {563} client block at 0x0BA91028, subtype c0, 1432 bytes long.
a CTestView object at $0BA91028, 1432 bytes long
Object dump complete.

原因是:非模态对话框Create之后未销毁导致内存溢出。

解决办法:

为CTestView类添加DestroyWindow()函数,并添加如下代码即可:

m_SetDBSource->DestroyWindow();
delete m_SetDBSource;

注意一定要:先调用m_SetDBSource的DestroyWindow()函数销毁窗口,再释放m_SetDBSource = new CSetDBSource;申请的内存空间。

0 0
原创粉丝点击