我想我的问题很简单。是的,我知道堆栈溢出有几个与链表/分段错误相关的问题,但我认为这些问题与未初始化的指针有关,而我认为我的问题与字符串有关。
我有一个链表,其节点结构由两个变量组成:指向next节点的链接和 (!) a string。
我的问题:我如何释放节点的内存(记住它是被malloc吃掉的)而不通过free()ing 字符串导致分段错误?
free()在浏览与和相关的其他问题时strings,我的印象是它们没有必要free()。但是如何释放struct其中包含string嵌套字符串的 a 呢?
我正在实现的链表函数似乎在工作 except destroyList(),它释放了传递给函数的节点的所有分配内存以及所有后续节点。
这是实现:
void destroyList(struct listNode *pNode){
if(pNode->next != null){
destroyList(pNode->next);
}
free(pNode);
}
这是listNode结构:
struct listNode{
char addr[MAX_ADDR_LENGTH];
struct listNode *next;
};