[英]Pointer causes access violation
我有一個控制台應用程序從控制台讀取一些char數據,然后放入一個結構。 這個結構用作鏈表,當它被構造時,我保持一個指針指向第一個列表元素,一個指針用於運行列表。 我發生的事情是,當我第一次瀏覽我的列表並將其內容寫入控制台時,一切都在完美地運行。 當我后來想要將我的運行指針設置為列表最后一個元素時,它會隨着c000005訪問沖突錯誤而崩潰。 我會告訴你我的代碼中有趣的部分:
我的結構的定義:
struct musikdaten {
char interpret[150];
char titel[150];
struct musikdaten* next;
};
打印列表內容:
while (it != NULL) {
cout << it->interpret << ": " << it->titel << "\n";
cout << "next: " << it->next << "\n";
it = it->next;
}
將“it”設置為列表的最后一個元素:
while (true) {
if (it->next == NULL) {
cout << "Assigning some memory...\n";
it->next = new musikdaten;
break;
}
else it = it->next;
}
但是,當列表包含兩個以上的元素時,最后一部分會不斷崩潰。 注意:當從控制台讀取內容時添加新的列表元素時,下一個指針始終初始化為NULL。
您應該使用NULL
初始化next
成員以指示列表的結尾:
it->next = new musikdaten;
it->next->next = NULL;
或者添加默認構造函數:
struct musikdaten {
musikdaten() { next = NULL; /*TODO: init other members*/}
char interpret[150];
char titel[150];
struct musikdaten* next;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.