[問題] 關於字元指標
同樣這一段
char *name;
cout<<"input name:";
cin>>name;
若寫在main()裡,可以正常執行.
但若以成員函數(或friend函數)寫,則輸入後會當掉,用cin.getline()也是會當
但若改成char name[10]則cin或cin.getline()則都正常
或改寫為char *name=new char[10]; 也正常.
問題1.
是否是因h檔並未實際分配記憶體所致?(指標的空間及所指之空間)
但執行後就應分配記憶體,不是嗎?
且為何寫在main()裡就可以?但即使寫在main裡,指標也未接收new所分配的空間,
照樣正常執行阿?
問題2.
實際輸入時,若輸入超過10個字元,若在15個以下,仍然正常結束.
(這似乎是一個字組,但字組是16個bit而非byte呀?)
但若超過15個則不正常結束,why??
若將大小改成16,則最多只能輸入15個字元,多一個就當掉.
這根據的是什麼呢?是否意味陣列大小最好是16的倍數?
os:xp
編譯環境:dev c++ 4.9.9.2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.20.169
※ 編輯: ppttcc 來自: 114.38.20.169 (10/18 12:20)
※ 編輯: ppttcc 來自: 114.38.20.169 (10/18 12:22)
→
10/18 12:22, , 1F
10/18 12:22, 1F
→
10/18 12:22, , 2F
10/18 12:22, 2F
→
10/18 12:22, , 3F
10/18 12:22, 3F
→
10/18 12:23, , 4F
10/18 12:23, 4F
→
10/18 12:25, , 5F
10/18 12:25, 5F
→
10/18 12:28, , 6F
10/18 12:28, 6F
→
10/18 12:29, , 7F
10/18 12:29, 7F
剛我測了一下,若我改成8,但我實際輸入了20個字元,可正常結束...
我快瘋了...
※ 編輯: ppttcc 來自: 114.38.20.169 (10/18 12:33)
推
10/18 12:32, , 8F
10/18 12:32, 8F
→
10/18 12:33, , 9F
10/18 12:33, 9F
→
10/18 12:34, , 10F
10/18 12:34, 10F
→
10/18 12:34, , 11F
10/18 12:34, 11F
推
10/18 12:40, , 12F
10/18 12:40, 12F
推
10/19 19:35, , 13F
10/19 19:35, 13F