typedef?struct?No?{
?string?name;
?struct?No*?next;
}Node,??*?pNode;
pNode?list(void)?{
?string?val;
?pNode?HEAD?=?(pNode)malloc(sizeof(Node));
?if?(HEAD?==?nullptr)?{
??cout?<<?"分配內(nèi)存失??!"?<<?endl;
??exit(-1);
?}
?pNode?end?=?HEAD;
?end->next?=?nullptr;
?int?i;
?cout?<<?"請(qǐng)輸入人數(shù)"?<<?endl;
?cin?>>?i;
?cout?<<?"請(qǐng)輸入姓名"?<<?endl;
?for?(int?j?=?0;?j?<?i;?j++)?{?
??cin?>>?val;
??pNode?p_end?=?(pNode)malloc(sizeof(Node));
??if?(p_end?==?nullptr)?{
???cout?<<?"分配內(nèi)存失?。??<<?endl;
???exit(-1);
??}
??p_end->name?=?val;
??end->next?=?p_end;?????//出錯(cuò)點(diǎn):訪問地址沖突
??p_end->next?=?nullptr;
??end?=?p_end;
?}
?return?HEAD;
}
1 回答
已采納

AAnonymous
TA貢獻(xiàn)62條經(jīng)驗(yàn) 獲得超31個(gè)贊
個(gè)人覺得問題在于,不應(yīng)當(dāng)使用C風(fēng)格的struct。
既然C++中struct是一個(gè)類,你就應(yīng)當(dāng)寫成C++的類。使用new去創(chuàng)建對(duì)象。
malloc不會(huì)調(diào)用構(gòu)造函數(shù),只是分配那么大一塊內(nèi)存,而且C++里,string也是一個(gè)類,這樣可能導(dǎo)致某些地方內(nèi)存訪問出問題。
- 1 回答
- 0 關(guān)注
- 1035 瀏覽
添加回答
舉報(bào)
0/150
提交
取消