Posted on 2007-06-20 19:39
MiweiDev 閱讀(1131)
評(píng)論(11) 編輯 收藏 引用 所屬分類(lèi):
C / C++Language
回溫C語(yǔ)言,發(fā)現(xiàn)這個(gè)關(guān)于內(nèi)存的問(wèn)題,請(qǐng)大家?guī)兔忉寏~
#include <iostream>
using namespace std;

int main()
{
char strArray[5] = "";
cout << "請(qǐng)輸入一個(gè)字符串(不要超過(guò)5個(gè)):" << endl;
gets(strArray);
puts(strArray);

return 0;
}
我定義的數(shù)組長(zhǎng)度的5,strArray[5]是字符串類(lèi)型的,本來(lái)只能存儲(chǔ)4個(gè)字符加上一個(gè)'\0',但是當(dāng)我輸入的字符個(gè)數(shù)多于9個(gè)(包含9)的時(shí)候,才有提示錯(cuò)誤出現(xiàn),當(dāng)然我知道是數(shù)組的越界那部分的內(nèi)存不可讀,但是為什么我輸入從5到9之間的時(shí)候卻不報(bào)錯(cuò)呢?
隨后我又把數(shù)組的大小調(diào)整到 15 , 但是此時(shí)輸入 17 個(gè)字符時(shí)才報(bào)錯(cuò),
然后我又改變了數(shù)組的大小變?yōu)?0, 然后又實(shí)驗(yàn) 結(jié)果我輸入13 個(gè)時(shí)才開(kāi)始報(bào)錯(cuò)!
誰(shuí)能幫我解釋原因?
有關(guān)于這方面的書(shū)籍嗎?幫忙推薦幾本!THANKS!