c言語における「xxxxに未処理の異常がある」問題の分析と解決

1381 ワード

ローカル変数でチェーンテーブルを書いた後、チェーンヘッダのライフサイクルが終了するという問題が発生しやすい.筆者はこの問題を回避するためにmalloc()を用いたが,実行中の問題では問題のような問題が発生した.資料を調べてみると、この問題をどう解決するか大体知っています.
筆者の最初のコードはこうでした.
//CREATE THE HEAD OF A LINKED LIST
Word_list* linked_list_head = (Word_list*) malloc(sizeof(Word_list));
linked_list_head->next = 0;		//  

Word_list* previous;
Word_list* current;
Word_list* pointer_learn;

//START TO READ THE DATA
FILE* filepointer = fopen(filename, "rb");

Word_list* object = (Word_list*) malloc(sizeof(Word_list));
fread(&object->word, 1, sizeof(object->word), filepointer);
fread(&object->explain, 1, sizeof(object->explain), filepointer);
fread(&object->example_sentence, 1, sizeof(object->example_sentence), filepointer);
fread(&object->count_total, 1, sizeof(object->count_total), filepointer);
fread(&object->count_correct, 1, sizeof(object->count_correct), filepointer);
fread(&object->rate_correct, 1, sizeof(object->rate_correct), filepointer);
object->next = 0;

linked_list_head->next = object;		//   

するとエラーが表示されます.
まだ初期化されていないポインタ変数で、コンパイラはデフォルトで初期化されていないポインタを0 xccに初期化し、0 xccは保護されたデータ領域であるため、プログラムがクラッシュします.
試してみるという態度で、筆者はlinked_list_head->next=0がlinked_に変更されましたlist_head->next = NULL.OK、問題解決!