所以,如果我理解正确的话,字符串列表不是访问数据的主要方式,它只是一个指针的“清理列表”,必须释放这些指针,而不必遍历所有其他现已过时的数据。
在这种情况下,我会使用链表,但不是以正常方式。您的node_s
上述要求,对于每个字符串,您malloc
为结构执行一个,为字符串本身执行一个。
相反,我会定义一个这样的结构:
struct string_list {
struct string_list *next;
char data[0];
};
零长度数组在结构中不占用空间,但为您提供了一个可以使用的类型化地址。然后,您可以为结构和实际字符串分配内存:
struct string_list *newstr = malloc (sizeof(struct string_list) + my_desired_size);
然后将数据放在newstr->data
,并链接next
指针:
newstr->next = list_head;
strcpy (newstr->data, my_data, my_desired_size);
list_head = newstr;
当需要释放字符串时,只free
需要一个即可。哦,当然还有修复链接。