如果另一个指针持有相同的地址,我可以检查Valgrind或Gdb吗?

时间:2016-01-13 12:27:52

标签: c gdb valgrind

我正在为我为学校写的一个程序做测试,我用这个msg得到了分段错误

double free or corruption (out)

我试图释放地址后。

所以我想我之前已经发布了这个地址,所以我的问题是 - valgrind / gdb可以告诉我两个不同的指针是否指出了一个地址?或者给出一个地址他们可以告诉我有多少指针指向它吗?

1 个答案:

答案 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);
}