メモリリークの追跡 ― 2006年11月22日 08時52分25秒
自分の書いたコードならば、ある程度心当たりがあったりするので、比較的楽だ。それが、人の書いた物だと、更に追跡は難しくなる。心当たりになるものも無いし、見当も全くつかない。
そして、メモリリークに当たる時は必ずと言っていい程、人が書いたコードに原因があるものである。そのようなときは、メモリに印を付けると手掛かりになることもある。
#include <stdlib.h>
#define free(x) {(*(char*)x) = (char)__LINE__; free(x);}
int main()
{
char *string = malloc(10);
sprintf(string, "1234567");
printf("before:%s\n", string);
free(string);
string = malloc(10);
printf("after:%x:%s\n", string[0], string);
}
最近のコメント