我想我的问题很简单。是的,我知道堆栈溢出有几个与链表/分段错误相关的问题,但我认为这些问题与未初始化的指针有关,而我认为我的问题与字符串有关。
我有一个链表,其节点结构由两个变量组成:指向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;
};