前几天写了一个开链hash表,结构如下:
*node1 -->next-->next->...
*node2 -->next-->...
*node3 -->...
*node4 -->next-->next->next-->...
即首先创建一个Node数组,该数组由calloc分配,然后每个node又在后面跟着一个长链表。这样在最后释放的时候就出现了问题:
我用递归的方法free每一个链表的node,在释放到每个链表的第一个node时,出现了“非法指针错误“。后来经过查找发现,不论calloc还是new,他们分配的数组只能在第一个元素上free或delete []。在其他元素上无法释放。