在下面的程序中,我需要在哈希表,列表元素和唯一字上調用free()。我嘗試了幾件事情,但都是破壞程序或增加錯誤信息。一些嘗試在評論和大膽。如何修復此程序中的內存泄漏
有沒有人知道在哪裏以及如何打電話免費?它作爲指針被混淆了。
h_ptr *htable;
int tsize;
void new_table(int size)
{
tsize = size;
htable = (h_ptr *) calloc(size, sizeof(h_ptr));
if (!htable) {
fprintf(stderr, "Couldn't allocate hash array, exiting\n");
exit(1);
}
for(int i=0; i<size; i++)
{
htable[i]=NULL;
}
}
您的問題中代碼太多。你可以試試它嗎? – alestanis 2013-03-08 19:18:19
我們不是你的調試器,選擇一個部分,並詢問有關它的具體問題 – 2013-03-08 19:25:39
你的問題已關閉(所以我不能「回答」),但瀏覽你的代碼,我看到你做錯了什麼。兩條適用於你的經驗法則;首先,每次調用'malloc()'都應該有一個匹配的調用,只要你需要它,'free()'就會保持到內存中。你有一些函數在頂部調用malloc,在底部釋放然後返回指針。不,這很糟糕。您將指針傳回給調用者,然後調用者完全釋放它。 – Mike 2013-03-08 20:02:50