考虑以下结构:
struct intNode
{
int num;
intNode* pNext;
};
struct list
{
intNode* first;
intNode* last;
int size;
};
假设我为列表分配了内存。如果我调用 free(lst),它是否也会首先和最后释放分配给 intNode 的内存?他们自己的 pNext 呢?直觉上我觉得我需要从内到外递归释放嵌套的内存块。
最佳答案
您需要单独释放它们,但通常对于链接列表,这是迭代完成的,而不是递归的:
void DeleteList(struct intNode *pHead)
{
struct intNode *pCur=pHead, *pDel=NULL;
while(pCur != NULL)
{
pDel = pCur;
pCur = pCur->pNext;
free(pDel);
}
}
关于c - 我需要释放子成员的分配内存还是足以释放父成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945872/