【发布时间】:2012-05-22 13:53:34
【问题描述】:
您好,我正在 MFC 中制作一个基于对话框的应用程序:
BOOL CClockMasterDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_ModeTabs.Create(this,WS_CHILD | WS_VISIBLE, 0);
}
如果我在使用 CClockMasterDlg::OnInitDialog 创建函数后销毁 m_ModeTabs :
m_ModeTabs.DestroyWindow();
当我把它放在CClockMasterDlg::OnDestroy() 中时,我没有得到内存但是泄漏了我得到了内存泄漏,即使它被调用并返回true 也很难。
我不相信OnDestroy 是OnInitDialog 的相反,但那是哪个功能呢?没有OnExitDialog。
检测到内存泄漏!
倾倒对象 ->
{601} 0x00AEED48 的客户端块,子类型 c0,212 字节长。
一个CMFCVisualManager 对象$00AEED48,212 字节长
对象转储完成。
程序[5312] ClockMaster.exe: Native 已退出,代码为 2 (0x2)。
即使很难,窗口也应该自动销毁,因为它不是指针,我仍然不应该出现内存泄漏吗?而且自从放置了
m_ModeTabs.DestroyWindow();
在 OnInitDialog 函数创建后解决了内存泄漏问题,它真的不能是其他原因造成的麻烦吗?删除m_ModeTabs.Create(... 也解决了内存泄漏,所以我很确定它是m_ModeTabs 造成的。
【问题讨论】: