c - 跟踪每个函数分配了多少内存

标签 c

是否有一种工具可以让我跟踪每个函数分配了多少内存?例如每当调用我的 add_node 函数时,由 malloc 分配的所有内存与 queue_buffer 中的内存相比,在程序的整个运行时等。

我想剖析大容量内存的使用位置。

最佳答案

我不知道有什么程序可以立即执行此操作,但您可以自己执行此操作。只需将类似这样的内容添加到一些全局头文件中:

#ifdef DEBUG
void* __replacement_malloc(size_t bytes, const char* fn_name)
{
        printf("Function %s allocated %lu bytes\n", fn_name, bytes);
        return malloc(bytes);
}
#define malloc(x) __replacement_malloc(x, __func__)
#endif

现在,当您使用定义的“DEBUG”进行编译时,任何对 malloc() 的调用都将被重定向。

关于c - 跟踪每个函数分配了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669178/

相关文章:

c - 如何将 int eg.99 转换为 char?

c - 如何从位域转换为指针?

c++ - 理想的缓冲区大小是多少?

在单个 malloc() 调用中创建二维数组

c - 限制和识别客户端 TCP

c - 使用 "*[]"和 "[][]"和 "(*)[]"传递 2D 数组?

python - 重复将值写入现有文件

c - 不使用字符串库的c中的字符串长度

c - 无法同步 FIFO 上的阻塞读取和写入

c - 如何有条不紊地追踪源代码的位置