内存管理与GDB调试全解析
1. 内存管理
在内存管理方面,我们首先来看一个存在内存泄漏问题的代码示例:
{ int j; mtrace(); for (j = 0; j < 2; j++) malloc(100); /* Never freed:a memory leak */ calloc(16, 16); /* Never freed:a memory leak */ exit(EXIT_SUCCESS); }当运行此程序并查看跟踪信息时,可按以下步骤操作:
$ export MALLOC_TRACE=mtrace.log $ ./mtrace-example $ mtrace mtrace-example mtrace.log输出结果可能如下:
Memory not freed: ----------------- Address Size Caller 0x0000000001479460 0x64 at /home/chris/mtrace-example.c:11 0x00000000014794d0 0x64 at /home/chris/mtrace-example.c:11 0x0000000001479540 0x100 at /home/chris/mtrace-example.c