问题来源:
今天在写一些代码的时候遇到了一个运行时的问题
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;
我手滑写错了之后,对申请的空间进行了字符串拷贝等操作,这样的话怎么可能不越界呢?