Efence(Electric Fence)可以在debug阶段帮我们最大程度的发现这种问题,并精确定位问题的所在。
测试代码
-
#include <stdio.h>
-
#include <malloc.h>
-
int main(void)
-
{
-
int *a = (int*)malloc(2*sizeof(int));
-
-
for (int i=0;i<=2;i++) {
-
a[i] = i;
-
printf("%d\n", a[i]);
-
}
-
-
free(a);
-
return 0;
-
}
先不用efence
编译 gcc -g3 -Wall -o test test.c -std=c99
运行结果
0
1
2
使用efence
gcc -g3 -Wall -o test test.c -lefence -lpthread
efence库依赖于pthread库
运行结果
Electric Fence 2.2.2 Copyright (C) 1987-1999 Bruce Perens
0
1
Segmentation fault (core dumped)
阅读(4514) | 评论(0) | 转发(0) |