gpt4 book ai didi

检查内存分配w/o valgrind

转载 作者:太空狗 更新时间:2023-10-29 15:40:49 24 4
gpt4 key购买 nike

编写我自己的 malloc() 版本(和他最好的 friend free() 先生),我需要知道我是否正确地释放了我的内存。似乎我不能使用 valgrind,因为它会检查 libc'malloc,而我的是在加载了 LD_PRELOAD 的共享库中。

目前,如果我使用 valgrind,它会显示“0alloc 0free 0leak,一切都很好”,因为它没有检测到我使用 MY malloc 进行的分配。 (我使用 (s)brk() 函数)

有人知道是否有办法用 valgrind 或其他方式检查吗?

谢谢!

最佳答案

看起来有两种可能的解决方案:

--soname-同义词

如果您的自定义分配器函数仍称为 malloc() 和 free(),请使用 --soname-synonyms 命令行参数告诉 Valgrind 在您的预加载库中查找这些函数。然后它可以自动拦截对这些函数的调用。示例:

--soname-synonyms=somalloc=mymalloclib.so

参见 http://valgrind.org/docs/manual/manual-core.html#manual-core.rareopts了解详情。

客户请求

如果你有一个更复杂的自定义分配器(使用不同于 malloc()/free() 的 API),你可以在你的 malloc()/free() 实现中使用特殊的“客户端请求”来告诉 Valgrind 结构你的内存库。参见 http://valgrind.org/docs/manual/mc-manual.html#mc-manual.mempools了解详情。

我还没有测试过这两种解决方案中的任何一种 :-) 所以很高兴听到它是否真的适合你。

关于检查内存分配w/o valgrind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21563446/

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