读书人

char* szValue = new char[2];执行后s

发布时间: 2012-03-08 13:30:13 作者: rapoo

char* szValue = new char[2];执行后szValue所指内存空间大小超过2,为什么?
char* szValue = new char[2];
上面就是我的语句.我是在vs2005的c++中编的.
我调试的时候跟进去看发现它的值是: "屯铪 "

我把2改为3,即 char* szValue = new char[3];
值变为: "屯妄 "

请教是什么原因???

[解决办法]
指针本身表示内存地址,没有什么含义。你可以用(long)szValue来查看。指针指向的内存内的值才是有意义的。你运行两次,为szValue申请了两次内存,内存地址不一样没有什么奇怪的。
[解决办法]
szValue还未初始化,所以你看到的值是什么都不奇怪!
[解决办法]
szValue 指向的内容只有两个是你自己的,并且后面的内存空间你也能看到.
在因为你没初始化,所以是什么内容都有可能
[解决办法]
char* szValue = new char[2];
memset(szValue, 0, 2); //初始化空间内容 ~

读书人网 >C++

热点推荐