リンクされたリスト全体を解放するためのコードは次のとおりです
void free_list(RecordType *list)
{
RecordType *tempNode; /* temporary Node to hold on the value of previous node */
while(list != NULL) /* as long as the listnode doesn't point to null */
{
tempNode = list; /* let tempNode be listNode in order to free the node */
list = list->next; /* let list be the next list (iteration) */
free(tempNode); /* free the node! */
}
}
このコード自体は正常に動作していると思いますが (?)、確認方法がわかりません。私は理論を適用しただけです(たとえば、フリーの数=マロックの数にする必要があります)
そこで、気になる質問をいくつか...
- この方法は機能しますか?
- tempNode を malloc する必要がありますか?
- while ループの前に tempNode を初期化しました...しかし、解放した後も tempNode は引き続き機能します...その部分は実際にはわかりません
私が使用した理論:
- free() の数 == malloc() の数
- 現在のノードを保持するための一時ノードが必要です
- 現在のノードを次のノードと等しくする
- 一時ノードを使用して現在のノードを解放する
私の理論が間違っているように聞こえる場合は、説明してください!
ありがとう!