2016-01-13 24 views
1

Im做測試的程序我寫了學校,我得到了一個分段錯誤這個味精如果另一個指針擁有相同的地址,我可以使用Valgrind或Gdb進行檢查嗎?

double free or corruption (out) 

後,我試圖釋放一個ADRESS。

所以我想我已經發布了這個地址之前,所以我的問題是 - valgrind/gdb可以告訴我,如果地址是由兩個不同的指針指出?或給出一個地址他們可以告訴我有多少指針指向它?

+2

不一定是雙重釋放或**腐敗**,如果您需要幫助,請發佈代碼。 –

+0

@iharob umm它的一個大型項目在這裏發佈,但讓我們說它是雙重免費的,有沒有辦法做到我問 – nadavgam

回答

3

Valgrind的會告訴你,你想dealocate第二次區塊和您最初釋放它:

產生這種
==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); 
} 
相關問題