我知道堆损坏可能是由多种原因引起的。
我在Visual Studio中有一个QT C ++项目。如果我从Visual Studio运行Debug或Release模式,一切都顺利进行。
如果我运行已发布的可执行文件(在Visual Studio之外),我得到一个应用程序已停止工作错误,然后是一个提示,询问我是否要调试。这将显示 Visual Studio即时调试器窗口,其中说明:An unhandled win32 exception occured in my_qt_application.exe[8812]
如果我选择调试,我收到消息:Unhandled exception at (...) (ntdll.dll) (...) A heap has been corrupted.
所以我一直在代码中搜索原因。问题是这个错误发生在非常随机的情况下,不是很一致。
我的问题是; 可以这个缺少dll的原因? (我已经添加了允许程序运行的dll。)
答案 0 :(得分:2)
没有。原因不能错过dll。这可能是一个近因。示例:如果某些图像插件不可用,并且您的代码未检查QImage
加载是否成功,然后尝试对空图像进行操作 - 则可能存在问题。
但最有可能的是,你有一个普通的旧记忆错误,你应该使用例如Valgrind的。