問題來源:
今天在寫一些代碼的時候遇到了一個運行時的問題
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;
我手滑寫錯了之後,對申請的空間進行了字符串拷貝等操作,這樣的話怎麼可能不越界呢?