char *ch = new char; 与 char *ch = new char[10];

来源:互联网 发布:如何让安卓手机连入mac 编辑:程序博客网 时间:2024/06/09 17:16

先上一段代码:


char *ch = new char;ch  = "abcd";cout<< "ch= " << ch <<endl;delete ch;return 0;

上面的代码中,ch申请了一个字节的空间。 随后指针指向了 一个4个字节的字符串。 

程序运行时没有问题。但是存在一个隐患,因为后面三个字节,已经造成内存越界了。

后面若再申请内存,分配到的内存地址刚好在 这3个字节所在的地址,就出出现内存踩飞,程序崩溃。


所以,若ch指向的内存数据越大,越容易出现这种问题。


所以正确的代码习惯应该是:

char *ch = new char[4];ch  = "abcd";cout<< "ch= " << ch <<endl;delete []ch;return 0;


0 1