求教free(q);q=q->next

2025-06-21 14:16:07
推荐回答(2个)
回答1:

free释放的是q指针所指向的由malloc所分配的内存单元,q指针本身是不会释放的,所以之后可以将q指针重新指向新的内存地址,即指针r指向的位置;这里是因为外层有循环,所以需要将q指针移动到它的下一个元素,以便继续迭代执行。

回答2:

逻辑上程序是错的,实际上可能是对的
free只是告诉系统,这块我不要了,但在内存分配给其它之前它都是存在的
当你的系统内存极具匮乏的时候,这段程序就会出错