用上面的方法可以记录free的位置和参数,如果要记录malloc的位置,稍微复杂一点 C/C++ code #include <stdio.h> #include <stdlib.h> void * debug_malloc(size_t size, const char *file, int line, const char *func) { void *p; p = malloc(size); printf("%s:%d:%s:malloc(%ld): p=0x%lx/n", file, line, func, size, (unsigned long)p); return p; } #define malloc(s) debug_malloc(s, __FILE__, __LINE__, __func__) #define free(p) do { / printf("%s:%d:%s:free(0x%lx)/n", __FILE__, __LINE__, / __func__, (unsigned long)p); / free(p); / } while (0) int main(int argc, char *argv[]) { char *p; p = malloc(1024); free(p); return 0; } 输出为: 052.c:28:main:malloc(1024): p=0x800902400 052.c:29:main:free(0x800902400) http://topic.csdn.net/u/20090812/15/43cae1c5-938d-4dac-a5f2-192f262d30f5.html?seed=621597316&r=59071821