malloc函数打桩怎么写
时间: 2023-07-07 21:42:36 浏览: 102
自己动手写malloc函数
5星 · 资源好评率100%
下面是一个简单的malloc打桩示例,其中包含了对分配内存大小的统计和对malloc调用次数的统计:
```c
#include <stdio.h>
#include <stdlib.h>
static size_t total_memory_allocated = 0;
static size_t malloc_call_count = 0;
void* my_malloc(size_t size) {
void* ptr = malloc(size);
total_memory_allocated += size;
malloc_call_count++;
printf("my_malloc: allocated %zu bytes (total %zu bytes) (call count %zu)\n", size, total_memory_allocated, malloc_call_count);
return ptr;
}
// 宏定义将所有的malloc替换为my_malloc
#define malloc(size) my_malloc(size)
int main() {
int* p1 = malloc(sizeof(int));
int* p2 = malloc(2 * sizeof(int));
free(p1);
free(p2);
return 0;
}
```
在这个示例中,我们定义了一个my_malloc函数,它会在执行malloc分配内存之后,统计当前程序中已经分配的总内存大小和malloc调用次数,并输出相关的信息。然后我们使用宏定义将所有的malloc替换为my_malloc,这样在程序中所有的malloc调用都会被替换为my_malloc。
在main函数中,我们分别分配了一个int和两个int的内存,并在最后释放了这些内存。当程序运行时,my_malloc函数会输出类似下面的信息:
```
my_malloc: allocated 4 bytes (total 4 bytes) (call count 1)
my_malloc: allocated 8 bytes (total 12 bytes) (call count 2)
```
这样,我们就可以通过自己编写malloc打桩函数,实现对内存分配的调试和性能分析。
阅读全文