私はポインターと C の考え方に比較的慣れていないので、これが本当に単純な問題である場合は申し訳ありません。作成されたメモリから単一リンク リストを解放しようとしています。個別のリストは正常に作成されていますが、メモリから解放するのに問題があり、セグメンテーション違反が発生します。私が間違っているアイデアはありますか?freelist と freenode の両方に別々のメソッドが必要です。Avail はグローバル ポインター変数であり、確実に機能するコードの一部です。問題は空きリストにあり、どこにあるのかわかりません。
void freelist(olnode **list) {
olnode *ptr = *list;
while (*list != NULL) {
ptr = *list
freenode(&ptr);
ptr = ptr->next;
}
}
void freenode(olnode **ptr) {
if(*ptr != NULL) {
(*ptr)->next = avail;
avail = *ptr;
*ptr = NULL:
}
}