gpt4 book ai didi

c++ - 每当调用 malloc/free 时输出到 stderr

转载 作者:IT王子 更新时间:2023-10-29 00:45:32 25 4
gpt4 key购买 nike

对于 Linux/GCC/C++,我想在调用 malloc/free/new/delete 时向 stderr 记录一些内容。我试图了解库的内存分配,因此我想在运行单元测试时生成此输出。我使用 valgrind 进行内存泄漏检测,但我找不到让它只记录分配的选项。

有什么想法吗?我正在寻找最简单的解决方案。重新编译库不是一种选择。

最佳答案

您可以使用 ltrace 跟踪对 malloc/free 的调用:

#include <stdlib.h>

int main (void)
{
void *ptr = malloc(10);
free(ptr);

return 0;
}


$ g++ test.cpp -o test
$ ltrace -e malloc,free ./test
malloc(10) = 0x804a008
free(0x804a008) = <void>
+++ exited (status 0) +++

要在不重新编译的情况下跟踪新的/删除的调用,您可能需要使用类似 LD_PRELOAD 的东西来用您自己的版本覆盖调用,这正是 LeakTracer做什么可能会做你想做的事。

关于c++ - 每当调用 malloc/free 时输出到 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292109/

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