Posted on 2007-06-20 19:39
MiweiDev 阅读(1107)
评论(11) 编辑 收藏 引用 所属分类:
C / C++Language
回温C语言,发现这个关于内存的问题,请大家帮忙解释~~
#include <iostream>
using namespace std;
int main()
{
char strArray[5] = "";
cout << "请输入一个字符串(不要超过5个):" << endl;
gets(strArray);
puts(strArray);
return 0;
}
我定义的数组长度的5,strArray[5]是字符串类型的,本来只能存储4个字符加上一个'\0',但是当我输入的字符个数多于9个(包含9)的时候,才有提示错误出现,当然我知道是数组的越界那部分的内存不可读,但是为什么我输入从5到9之间的时候却不报错呢?
随后我又把数组的大小调整到 15 , 但是此时输入 17 个字符时才报错,
然后我又改变了数组的大小变为10, 然后又实验 结果我输入13 个时才开始报错!
谁能帮我解释原因?
有关于这方面的书籍吗?帮忙推荐几本!THANKS!