mtraceを使ってみた
しっくハック: メモリリーク検出:mtrace編
↑を参考に使ってみた
ソース: malloc_test.c
#include<stdio.h> #include<stdlib.h> #include<mcheck.h> int malloc_test() { char *c, *d; c = (char *)malloc(100); d = (char *)malloc(100); free(c); return 1; } int main() { mtrace(); malloc_test(); muntrace(); }
コンパイルからmtrace実行まで
$ pwd /home/user/mtrace $ ls mallc_test.c $ export MALLOC_TRACE="./mtrace.log" $ gcc malloc_test.c -g -o a.out $ ls a.out mallc_test.c mtrace.log $ mtrace a.out mtrace.log Memory not freed: ----------------- Address Size Caller 0x08a563e0 0x64 at /home/user/mtrace/malloc_test.c:9 $ awk 'NR == 9 { print }' malloc_test.c d = (char *)malloc(100);
のような感じ、しっかり検出してくれるっぽい。