[問題]關於字元陣列

看板C_and_CPP (C/C++)作者 (香菇)時間16年前 (2009/06/25 17:44), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
char name[2]; cin>>name; cout<<name; 當我輸入兩個字元時輸出就沒問題, 但三個和四個字元也可以正常輸出,我的問題在於只有宣告兩個字元 為什麼超出也可以輸出? 如果打一長串字元(十幾個字元),就會跑出 "0x35393837"指令參考的"0x35393837"記憶體,這是什麼意思 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.147.23

06/25 17:49, , 1F
因為C沒邊界檢查~最後是你寫到了受管制的記憶體的錯
06/25 17:49, 1F

06/25 17:49, , 2F
重點是 你幹嘛要宣告太小的陣列放你的字串 別這樣搞自己
06/25 17:49, 2F

06/25 19:17, , 3F
你可以去Google一下 Buffer overflow
06/25 19:17, 3F

06/26 04:14, , 4F
超過長度沒問題是運氣
06/26 04:14, 4F
文章代碼(AID): #1AGqSRWU (C_and_CPP)
文章代碼(AID): #1AGqSRWU (C_and_CPP)