gpt4 book ai didi

c++ - 如何在linux中找到分配的内存

转载 作者:IT王子 更新时间:2023-10-29 00:59:30 27 4
gpt4 key购买 nike

大家下午好

我想要完成的事情:我想实现一个 C++ 单元测试夹具的扩展,以检测测试是否分配了内存但没有释放它。我的想法是在测试前后记录分配级别或空闲内存级别。如果它们不匹配,那么你正在泄漏内存。

到目前为止我尝试了什么:我编写了一个例程来读取 /proc/self/stat 以获取 vm 大小和常驻集大小。驻留集大小似乎是我需要的,但显然不对。它在没有内存分配的情况下连续调用函数之间发生变化。我相信它返回的是使用的缓存内存,而不是分配的内存。它还以 4k 为增量进行更改,因此它太粗糙而无法实际使用。

我可以通过分配本地并保存它的地址来获取堆栈大小。这样做有什么问题吗?

有没有办法在 Linux 上获得真正的空闲或分配的内存?

谢谢

最佳答案

实际上,您最好的选择可能是使用专为查找内存泄漏而设计的工具。我对 Electric Fence 有亲身经历,它易于使用并且似乎可以很好地完成工作(不确定它处理 C++ 的效果如何)。别人也推荐的是Dmalloc .

可以肯定的是,每个人似乎都喜欢 Valgrind ,它几乎可以做任何事情,甚至有前端(尽管任何有前端构建的东西都意味着它可能不是世界上最简单的东西)。如果KDE人们可以推荐它,它必须能够处理任何事情。 (我并不是说 KDE 有什么不好,只是说它是一个非常大的 C++ 代码库,所以如果 Valgrind 可以处理 KDE 软件,它一定有它的用武之地。虽然我没有像 Electric Fence 这样的个人经验对我来说总是足够的)

关于c++ - 如何在linux中找到分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1257115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com