vs2019 寫入訪問權限沖突


先說句題外話

vs反應有時候有點慢,改過的地方等幾秒才會顯示正確

另外有時候正確的地方會報錯,重啟吧

 

回到正題

 

“引發了異常: 寫入訪問權限沖突。

_Left 是 0xCDCDCDCD。

如有適用於此異常的處理程序,該程序便可安全地繼續運行。”

 

原因是在初始化棧時使用了malloc,而棧的自定義對象中有string

 

malloc只是分配內存,並不進行初始化,不調用類的構造函數,所以當以下這兩處調用發生的時候,都會出現錯誤
getline(cin, p->data); 還有
     p = (DNode*)malloc(sizeof(DNode));
                        p->data = ss;
都是因為string對象的構造函數沒有被調用,沒有構建string對象。所以,getline函數無法調用string對象進行賦值,同樣,date也無法完成賦值。
同理,你修改后的程序,因為使用的是int類型替代string類型,所以沒有上面說的情況發生,所以可以運行。

解決辦法,用new代替malloc,
  p = new(DNode);
new會調用相應類的構造函數完成初始化。

 

 

 注意這樣做free棧時要用delete[]

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM