temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
私のプロジェクトでは、一時的なリンクリストを使用していますが、リンクされたリストのすべての要素を同時に削除したいのですが、コンパイラはセグメンテーションフォルトを与えます。リンクされたリストのすべての要素を削除する
temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
私のプロジェクトでは、一時的なリンクリストを使用していますが、リンクされたリストのすべての要素を同時に削除したいのですが、コンパイラはセグメンテーションフォルトを与えます。リンクされたリストのすべての要素を削除する
ループの最初または最後にどこかにtemp=Head;
がありません...最初の頭にtempが残ります。
最も簡単な方法は、ループの前からループ内の最初の行にtemp=Head;
を移動することです。
while (Head != NULL) {
temp = Head;
Head = temp->nextPtr;
free(temp);
}
私はあなたのコンパイラがSegmentation Fault
を与えているとは思いません。かなり恐ろしいインプットの下でさえ、セグメンテーションしてはいけません。あなたのプログラムがsegfaultを引き起こしていると思います。あなたはループ本体内にtemp
を設定することを怠っています。
あなたは同じノードを解放し続けますか?つまり、テンポラリポインタはwhileループ内ではまったく変更されません。 – dip
これはちょうどサンプルコードですが、どれも動作しません – justuser