全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:805
推到 Plurk!
推到 Facebook!

[C++]指標字串問題

尚未結案
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-25 17:10:06 IP:218.168.xxx.xxx 未訂閱
請問一下 以下的程式 為何new char新增字元空間應該只有10個位址      怎麼打上去超出還是可以繼續打 麻煩解答疑問  ex:IN:12345678901   OUT:12345678901 為何不是12345678901 1234567890    #include using namespace std; void main() { int count=0; char *a = new char[10]; cin>>a; cout<
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-25 18:57:04 IP:220.130.xxx.xxx 未訂閱
這只是宣告一個字串的起始位置.. char *a = new char[10]; 而[10]的宣告只能保證你在這十個字元內是不會被改寫的(因為這十個位置是你事先reserve的), 但當你輸入超出十個字元的空間時, 記憶體的確是寫超過了, 但超出的部份就不能保證會不會被其他的程式段給改寫掉..。
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-25 18:57:10 IP:203.69.xxx.xxx 未訂閱
當然可以繼續打。 因為你這樣做。會造成溢位。這是C的一種潛在性危機。 所以寫程式的人,要自己小心。 不要做出會危害安全的動作。
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-25 22:49:57 IP:61.231.xxx.xxx 未訂閱
那請問二位 要不溢位的話 是否 加大格數 還是有別的方法?@@"
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-26 12:40:01 IP:203.69.xxx.xxx 未訂閱
1.加大。可是這個還是有被突破的風險。 2.去看看 cin 是否有輸入字數的限制。如果有,就限制它只取10個。 3.如果CIN做不到限制,只好自己寫一個輸入。 這就是找解決方法的步驟。
harryGod
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-26 14:01:37 IP:61.231.xxx.xxx 未訂閱
這樣我懂哩 感謝解答
系統時間:2024-05-19 16:37:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!