在下面的程序中,我需要在哈希表,列表元素和唯一字上调用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