前言
- 在关闭一个非模态对话框时,程序崩溃了。。。弹出了Assert断言警告。
问题分析
- 该模态对话框是创建在堆(heap)中的,关闭它时程序不会自动调用析构函数,没有释放对应资源,最终导致了内存泄漏。
解决措施
-
重载OnClose()函数,在OnClose()函数中调用DestroyWindow()函数。
void CMyViewFrame::OnClose() { CFrameWndEx::DestroyWindow(); } -
然后在消息映射中,调用OnClose()函数,即可解决该内存泄露问题。
BEGIN_MESSAGE_MAP(xxx,xxx) ON_WM_CLOSE() END_MESSAGE_MAP()

博客讨论了在C++应用中,非模态对话框关闭时引发的内存泄漏问题。问题源于对话框在堆上创建且析构函数未被正确调用。解决方案是重载OnClose()函数,调用DestroyWindow()来确保资源释放。通过在消息映射中添加对OnClose()的调用,成功解决了内存泄露。

1373

被折叠的 条评论
为什么被折叠?



