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;

我手滑写错了之后,对申请的空间进行了字符串拷贝等操作,这样的话怎么可能不越界呢?

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