c++ - 使用 QT 和 MinGW32 在 Windows 上检查内存泄漏

标签 c++ qt heap-memory mingw32

最近我一直在使用 QT Creator 使用 C++ 进行开发。一切都很好,我快要打包和分发我的应用程序了。但很明显,在发布任何版本之前,您最好确保一切正常。所以我正处于测试阶段,有些东西告诉我我有一些轻微的内存问题。没什么大不了的,但我喜欢沉迷于这些 ;-)。

所以我决定尝试一些内存泄漏检测库。对于初学者,我看了this问题。由于成本问题,我忽略了 Purify 和 Insure++。其他人建议使用 MSVC 编译器,这样我就可以使用 CRT 内存验证例程。我考虑过但暂时决定不这样做,因为它会对在 QT Creator 中使用调试器产生影响。

然后我偶然发现了DUMA我必须使用 QT 附带的 MinGW32 编译器对其进行编译。然而,我发现它在 QT 中的表现并不好,因为段错误的数量令人难以置信。我知道它们是 DUMA 的工作原理,但我很确定我没有像 DUMA 试图让我相信的那样把事情搞砸。

我尝试的另一件事是 google-performance-tools遗憾的是,即使我添加了所需的依赖项,我也无法使用 QT 提供的 MinGW32 版本进行编译。

所有这一切让我想到了我的问题:对于想要检查其程序是否存在内存泄漏的 QT Creator 开发人员,是否有任何可行的解决方案?

谢谢,

最佳答案

就我个人而言,我发现 valgrind/memcheck/callgrind/kcachegrind组合太强大而无法通过内存泄漏和性能分析。免费(免费)特别好,因为我个人负担不起其他一些专业工具的费用。

几年来,我一直在开发跨平台 Qt 应用程序。在开发过程中,当我想测试特性和功能时,我会在 Windows 和 Linux 之间来回切换。但是,我总是在 linux 中进行性能分析。我发现的内存泄漏和性能问题总是由我的开发人员团队在 Qt 之上注入(inject)的。因此,当这些问题得到解决时,无论在 Linux 中是否被识别,Windows 都会带来好处。

我建议您研究设置一个您可以在其中进行测试的纯 Linux 构建环境。也许对您来说最简单的解决方案是创建一个虚拟机来进行性能分析。我的首选组合是 VirtualBoxUbuntu .

关于c++ - 使用 QT 和 MinGW32 在 Windows 上检查内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527325/

相关文章:

java - 如何从操作系统分配内存而不是增加 JVM 的堆大小?

c++ - 编程中的调度概念——用户输入

c++ - QT/C++ 类型的奇怪重载函数情况

c++ - 使用 STL 算法重写的指针的循环示例,没有循环?

c++ - QML 应用程序崩溃;如何调试?

c++ - Qt检查当前进程是32位还是64位

Java:声明和初始化的最佳实践

c++ - C++ 中的动态数组(指针数组还是新数组?)

c++ - 宽字符窗口

c++ - 如何在 std::function 中存储 std::sqrt