【发布时间】:2020-12-17 11:42:03
【问题描述】:
我创建了一个 Hashmap,其中有很多键。我的麻烦是:如何销毁我的哈希图?
如果我在我的 hashmap 中写 free ,它会变成 NULL 还是别的什么?
我认为 free 函数就足够了,但是当我尝试调用我的函数时:
int isEmpty(struct hashmap *t){
if(t!=NULL) {
int sizeT = t->size;
for (int j = 0; j < sizeT; j++) {
if (t->list[j] != NULL)
return FALSE; // FALSE, if it is full
}
return TRUE; // TRUE, if it is empty
}else{
printf("Empty!");
return 2;
}
}
在这个函数之前我运行free 所以在isEmpty 它可能会进入else 语句而不是它进入if 条件是(t!=NULL)。我怎么能绝对摧毁它?
【问题讨论】:
-
这是你自己写的哈希表还是第三方库?
-
为什么一个名为
isEmpty的函数需要一个您没有向我们展示的旨在“销毁”哈希映射的结构?结构如何?你希望free做什么? -
您谈论
free()就像您希望它修改变量一样?那样不行。 -
我使用
isEmpty函数创建了我自己的哈希表@Shawn,我希望在free之后,它进入else语句,因为我删除了我的哈希表。我调用free以释放所有节点并删除hashmap 结构。 @j3141592653589793238 -
只有在使用空指针调用函数时才会进入 else 块...