如何在执行C ++期间动态查看堆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在执行C ++期间动态查看堆相关的知识,希望对你有一定的参考价值。

我做了一个C ++应用程序,我目前正在测试它是否有内存泄漏。

在g ++ 7.2.0上它没有泄漏

enter image description here

但是在g ++ 5.4.0上确实如此。

enter image description here

我有一些类(动态数据结构)被初始化和使用,但这似乎与泄漏无关,因为它具有相同的大小,即使数据结构更大或总是空的,直到结束。

如何查看这些72,704字节的分配位置,以便我可以释放它们?

欢迎任何帮助/想法。

如果需要,我可以提供代码。

答案

在这个特定的情况下,你不能把它作为一个gcc bug(正如你所注意到的那样)被修复:Valgrind: Memory still reachable with trivial program using <iostream>

如果您真的想调查堆使用情况,可以使用valgrinds堆profiler:massif http://valgrind.org/docs/manual/ms-manual.html

以上是关于如何在执行C ++期间动态查看堆的主要内容,如果未能解决你的问题,请参考以下文章

如何让 C 预处理器在编译期间执行代码?

CMake - 如何在打包期间阻止执行安装脚本?

如何在编译期间编辑可执行文件而不更改其源? [复制]

如何查看在 Django 的 manage.py test 命令期间运行了哪些测试

如何在 c / c++ 程序中检测可能/潜在的堆栈溢出问题?

如何在性能方面分析 Hiccups?