C++中 new char() 和 new char [] 的區別

問題來源:

    今天在寫一些代碼的時候遇到了一個運行時的問題

CRT detected that the application wrote to memory after end of heap buffer

百度各位大佬的文章發現大多數問題都是在new完之後,後續操作中發生了越界,然後delete時系統報了這個錯誤

其中一篇文章如下

https://blog.csdn.net/wu_lai_314/article/details/8241697

但是對程序檢查之後發現,申請空間時考慮到了+1的這個情況,然後發現問題的原因在於

我錯將new char [] 寫成了 new char()

這二者的區別可就大了去了

比如說 char * ch = new char[10];  會申請一個有十個char元素的數組,然後把地址存在ch中

但是 char * ch = new char(10); 則會申請一個char的空間,用10去初始化

相當於char * ch = new char;   * ch = 10;

我手滑寫錯了之後,對申請的空間進行了字符串拷貝等操作,這樣的話怎麼可能不越界呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章