首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用CopyMemory复制字符串,字符串会多出一些货色

2013-08-23 
用CopyMemory复制字符串,字符串会多出一些东西这是C++2010.图上的代码就是这四句:char a[11]char b[11]

用CopyMemory复制字符串,字符串会多出一些东西
用CopyMemory复制字符串,字符串会多出一些货色
这是C++2010.图上的代码就是这四句:


char a[11];
char b[11]="I Love You";
CopyMemory(a,b,10);
cout<<a;

奇怪的是,我明明指明了CopyMemory复制10个字节(其实不就是10个字符吗?明明sizof(char)=1的),但是从监视窗体上看到a显示出来的字符串是“I Love You烫烫烫*s睵?”,那后面的的“烫烫烫*s睵?”是怎么来的。更奇怪的是明明以数组形式显示的字符串是对的,前面0~9就分别是“I”,“ ”,“L”……,到10刚好就没了,符合char a[11]的声明,所以就更不明白后面的的“烫烫烫*s睵?”是怎么来的??? 2010 C++ CopyMemory
[解决办法]
因为你应该复制 11 个字符。a/b 的类型都是 11 个字符的数组,最后一个隐藏的 '\0' 数组结束符,你不管了吗?
[解决办法]
引用:
Quote: 引用:

因为你应该复制 11 个字符。a/b 的类型都是 11 个字符的数组,最后一个隐藏的 '\0' 数组结束符,你不管了吗?

但哪怕是如此,数组我也只分配了11个元素啊,多出来的东西怎么也在这个数组里???

内存总是连续的,不可能切一段给你。
说分配给你11个元素,只是划了一个边界,告诉你这一段是你的,两边都是别人家的。
打印字符串的时候不会到了边界就停止,而是去找\0,如果你在边界没有设\0,那么打印的时候就打印到别人家里了。

热点排行