【发布时间】:2013-10-30 13:48:27
【问题描述】:
我在一个函数中创建了一个链表,并且在程序的其余部分中,我使用指针访问该列表。现在我将如何在我的程序结束时释放这个链接列表?我是直接使用free(CircuitData) 还是必须遍历列表以释放每个节点?写这篇我想释放每个节点是显而易见的答案......
顺便说一句,我还想问一下如何找出在程序期间分配的所有内存是否都被正确释放了?
ListNodeType *CircuitData;
CircuitData = NULL;
ReadFile(&CircuitData, &numEl, &numNodes);
void ReadFile(ListNodeType **CircuitData, int *numEl, int *numNodes){
ListNodeType *newPtr, *tempPtr;
newPtr = malloc(sizeof(ListNodeType));
*CircuitData = newPtr;
newPtr->nextPtr = NULL;
//MORE CODE
【问题讨论】:
-
对于您的第一个问题,根据您分配的片段,释放每个节点。实际上,它取决于列表的分配方式(显然)。一些链接列表是在静态缓冲区中完成的,但您的肯定似乎遵循规则而不是例外。
标签: c linked-list malloc free