2013-01-15 53 views
0

我試圖釋放我的程序退出之前我哈希表使用的內存,但我得到這個錯誤:免費Hashtable的內存

anagram(14510) malloc: *** error for object 0x100103be0: pointer being freed was not allocated 

以下是我的代碼,我用它來釋放表:

for(temp=0; temp<NHASH; temp++){ 

    sp=statetab[temp]; 

    while (sp!=NULL) { 
     test=sp; 
     sp=sp->next; 
     free(test->word); 
     free(test); 
    } 
} 

我不確定爲什麼會發生這種情況,因爲它可以正確釋放這個詞。有任何想法嗎?

+0

這段代碼沒有錯。 – Blood

+2

確保初始化全狀態的「statetab」爲零。 –

+1

用valgrind運行。 –

回答

-1

程序聲稱的大部分資源(當然是數據的內存空間)將在程序退出時自動釋放。除非你需要程序中的空間(或者在不再需要散列表後它會運行很長時間),請不要擔心。