QT 和堆损坏

QT and heap corruption

据我了解,堆损坏的发生可能有多种原因。

我在 Visual Studio 中有一个 QT C++ 项目。如果我 运行 在 Visual Studio 的调试或发布模式下,一切顺利。

如果我 运行 已发布的可执行文件(在 Visual Studio 之外),我会收到一个应用程序已停止工作的错误,然后会出现询问我是否要调试的提示。这将显示 Visual Studio 即时调试器 window 声明:An unhandled win32 exception occured in my_qt_application.exe[8812]

如果我选择调试,我会收到消息:Unhandled exception at (...) (ntdll.dll) (...) A heap has been corrupted.

所以我一直在代码中寻找原因。问题是这个错误发生在非常随机的场合,不是很一致。

我的问题是; 会不会是因为缺少dll? (我添加了允许程序 运行 的 dll。)

没有。原因不能是缺少 dll。这可能是近因。示例:如果某些图像插件不可用,并且您的代码没有检查 QImage 加载是否成功,然后尝试对空图像进行操作 - 可能会出现问题。

不过,您很可能遇到了一个普通的旧内存错误,您应该使用例如瓦尔格林德。