在Contiki中,我像这样声明了一个链表:
MEMB(recv_memb, struct record, MAX_RECORD);
LIST(recv_list);在使用链表之后,我像这样释放分配的内存:
for(n = list_head(recv_list); n != NULL; n = n->next)
{
list_remove(recv_list,n);
memb_free(&recv_memb,n);
}但是在到达MAX_RECORD之后,节点重新启动,我如何释放内存以供另外30条记录使用?
我正在Contiki Cooja模拟器中模拟网络场景,代码是Contiki编程和C语言的组合。
发布于 2017-03-15 19:08:13
一个问题(不确定这是否能完全解决你的问题……)是在元素已经从列表中删除并释放内存之后,在语句for(n = list_head(recv_list); n != NULL; n = n->next)中访问n->next指针。
试着这样做:
void *next;
for(n = list_head(recv_list); n != NULL; n = next)
{
next = n->next;
list_remove(recv_list,n);
memb_free(&recv_memb,n);
}https://stackoverflow.com/questions/42807596
复制相似问题