【发布时间】:2018-09-03 19:44:25
【问题描述】:
我有以下结构的链表:
struct pomiar {
unsigned int nr_pomiaru;
unsigned int nr_czujnika;
char data_i_czas[20];
double temp;
struct pomiar *nast;
};
我使用malloc() 分配所有元素:每个元素都由前一个元素指向。
释放列表时,我是否应该遍历整个列表并释放
*nast指向最后一个,或者我到底应该怎么做?
【问题讨论】:
-
你的链表是如何实现的?这有点相关?
-
@AlexanderHuszagh 我编辑了我的问题,希望它能回答你的问题。
-
是的,您应该遍历列表,为当前元素获取
nast指针的副本,然后释放当前元素,然后将复制的nast值放入当前元素中。在内存空闲后,您无法(可靠地)访问内存——不要!因此复制。void free_list(struct pomiar *list) { while (list != NULL) { struct pomiar *nast = list->nast; free(list); list = nast; } } -
@JonathanLeffler 谢谢你,这回答了我的问题。
标签: c list linked-list free singly-linked-list