連結串列作業中犯的一些錯誤

lia仔發表於2020-12-03
typedef struct student {
	int number;
	string name;
	int Chinese;
	int math;
	int English;
	struct student* next;
}student;//連結串列的結構

問題

在連結串列create node時一開始使用malloc,程式報錯,顯示無法讀取記憶體,且顯示結構體未初始化。
當時並未想著排查,所以直接換了new,程式正常執行。
於是往new和malloc的區別方面尋找程式出錯的原因。以我對兩者膚淺的認知,我認為區別在於是否有初始化,而calloc與new都會對申請到的記憶體進行初始化,於是運用calloc嘗試一次,程式在輸入name時存在亂碼,且有時會同malloc報錯一樣,由此排除初始化的問題

原因

而calloc在name上出現問題,因此可以從name的角度入手。
回頭再看結構體,name為string型別,結構體內的string是不定長度的,無法用malloc分配記憶體,malloc不會呼叫結構函式。

解決

若用malloc或calloc,則將string改為char陣列或者

相關文章