我正在为我为学校写的一个程序做测试,我用这个msg得到了分段错误
double free or corruption (out)
我试图释放地址后。
所以我想我之前已经发布了这个地址,所以我的问题是 - valgrind / gdb可以告诉我两个不同的指针是否指出了一个地址?或者给出一个地址他们可以告诉我有多少指针指向它吗?
答案 0 :(得分:3)
Valgrind将告诉您第二次尝试处理该区块的位置以及您最初解除分配的位置:
==21347== Invalid free() / delete / delete[] / realloc()
==21347== at 0x4C2A37C: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==21347== by 0x4005CA: main (test.c:7)
==21347== Address 0x51dc040 is 0 bytes inside a block of size 1,000 free'd
==21347== at 0x4C2A37C: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==21347== by 0x4005BE: main (test.c:6)
生成此代码的代码:
#include <stdlib.h>
int main()
{
char * x = malloc(1000);
free(x);
free(x);
}