C++数组越界的问题。

求问大神,为什么我写如下代码,然后输入时输入一个6个字幕的name,结果还是能显示出来。
不是应该越界了然后出错吗。
求解释下。
代码如下:
int main(){

char name[5];
cin>>name;
cout<<strlen(name);
cout<<endl;
cout<<name[5];
system("PAUSE");
return 0;
}

因为程序运行时为了使申请的内存大小凑整会得到比实际要用到更大的内存空间, 这里才超出一个字节虽然不合法但刚好也没越出内存保护范围于是还能正常运行. 输入的字符足够多的话就应该要出错了追问

内存大小凑整的意思是不是一int为单位凑整啊?比如一个int是4个字节,然后中间输入了一个char占一个字节。这个时候凑整就会给char凑出3个字节的空间?

追答

不一定, 和操作系统的内存管理有关系

温馨提示:答案为网友推荐,仅供参考
相似回答