所以我試圖防止在下面的代碼中發生的段錯誤。這是發生的,因爲我試圖訪問列表中尚不存在的下一個元素。我如何防止這種情況?我如何檢查列表中的下一個元素是不是越界?
while (vm->item_list.head->data !=NULL) {
printf("%-10s",vm->item_list.head->data->id);
printf("%-20s",vm->item_list.head->data->name);
printf("%-70s",vm->item_list.head->data->description);
printf("%-15d",vm->item_list.head->data->on_hand);
printf("%s","$");
printf("%d",vm->item_list.head->data->price.dollars);
printf("%s",".");
printf("%02d",vm->item_list.head->data->price.cents);
printf("\n");
vm->item_list.head = vm->item_list.head->next;
}
printf("\n");
}
我希望鏈表有頭有臉的地方指針*除了*'這個結構vm' ,因爲如果不是這個循環保證泄漏/孤立整個列表,將'item_list.head'成員留空,然後立即進行segfaulting。 (這很可能是問題的核心)。在調試器中運行此代碼並逐步完成代碼。 – WhozCraig 2014-10-16 15:02:56