MFC应用程序突然崩溃
我是MFC新手&我正在维护一个MFC应用程序,它有一个CView窗口GUI,用于使用CTreeCtrl显示和操作树的值。我所有的功能都很好,但有时我会崩溃。但我仍然无法确定坠机原因的任何模式 有时,在一些常见的操作之后,比如更改值(我已经执行了100次,效果很好),应用程序挂起或崩溃;有时,10-15分钟后的最大化是造成这种情况的原因。有时,树文本的大小变得异常粗体,然后挂起/崩溃。检查调用堆栈直到现在都没有用,因为它总是指向MFC应用程序突然崩溃,mfc,tree,crash,mdi,Mfc,Tree,Crash,Mdi,我是MFC新手&我正在维护一个MFC应用程序,它有一个CView窗口GUI,用于使用CTreeCtrl显示和操作树的值。我所有的功能都很好,但有时我会崩溃。但我仍然无法确定坠机原因的任何模式 有时,在一些常见的操作之后,比如更改值(我已经执行了100次,效果很好),应用程序挂起或崩溃;有时,10-15分钟后的最大化是造成这种情况的原因。有时,树文本的大小变得异常粗体,然后挂起/崩溃。检查调用堆栈直到现在都没有用,因为它总是指向DbgCRT或一些内部MFC源文件。这是一个MDI应用程序,我注意到当
DbgCRT
或一些内部MFC源文件。这是一个MDI应用程序,我注意到当文件数量更多或者当前文件有一个大的嵌套树时会发生崩溃
主要问题是我不能随意复制这个bug。我所做的是对树执行各种操作,比如添加新的嵌套分支、更改值&在20-30分钟后可能会发生这种崩溃。任何人请建议任何可能的方法来解决这个随机发生的错误
示例gui:“示例”
补充:
吊死后的一个瞬间:
听起来你在泄漏某种资源,很可能是GDI处理的。这些可能很难找到-您必须检查控件的每次使用(如
CTreeCtrl
、位图、句柄等),以确保在适当的时间正确释放它们(MSFT文档在这里是必不可少的)
检测到内存泄漏
,后跟地址和内存转储)坚持住 感谢@edtheprogrammerguy的回复。从输出窗口中,我看到“f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156):{1399129}正常块,0x04EE0898,21字节长。”-这行有10-20次。我认为这与CString有关,但无法准确找到导致它的代码。以前有一些内存泄漏。我用可视检漏仪解决了这些问题。但问题仍然存在。谢谢@edtheprogrammerguy。。我有GDI句柄在鼠标移动消息上的预翻译消息函数中泄漏。对于那些面临类似问题的人,请参考[链接]()&