如何将我的struct指针更改为新结构,并释放旧结构

时间:2015-08-10 15:38:45

标签: c

我在最后三行指出了这个函数中的一个错误,这个错误意味着将ht指向newHash,然后在旧{{1}上调用deleteMap hashMap曾经指向的结构。

ht

我知道这一定是错的,因为在我这样做之后,void _setTableSize(struct hashMap * ht, int newTableSize) { struct hashMap *newHash; newHash = createMap(newTableSize); struct hashLink * temp; int i; for(i = 0; i < ht->tableSize; i++){ temp = ht->table[i]; while (temp != 0){ insertMap(newHash, temp->key, temp->value); temp = temp->next; } } struct hashMap *temp2 = ht; ht = newHash; deleteMap(temp2); } 似乎指向垃圾,但我无法弄清楚如何正确地做到这一点。

1 个答案:

答案 0 :(得分:1)

您正在为ht分配一个值,但是因为它是函数的参数(并且所有参数都是值传递),所以当函数返回时不反映此值。

如果要修改ht以便调用者看到更改,您需要传递指针的地址并将函数更改为接受struct hashMap **ht,或让函数返回struct hashMap *