Re: [問題] 對於一個初學者很難的簡單問題...

看板C_and_CPP作者 (好人超)時間16年前 (2009/04/04 13:45), 編輯推噓1(108)
留言9則, 2人參與, 最新討論串2/2 (看更多)

04/04 18:06,
中文版真好:D 很感謝你的分享. 不過.compiler過不了...
04/04 18:06

04/04 18:07,
debug工具也開不起來XD ...exe產生失敗XD
04/04 18:07

04/04 18:07,
所以文章開頭說的很好...compiler過了後...才能用XD
04/04 18:07
其實編譯成功,真的只是第一步啊... XDD 今天才剛遇到一件很妙的事情。 有個同學問我,他的程式在 IDE 底下執行都沒有問題, 但是單純的把執行檔抓出來,結果就會錯誤。 更詭異的是,他把執行檔傳給我,我反倒可以正常執行。 原本我也一籌莫展,但是看到了他的程式碼有個怪東西: char *str; cin >> str; 我請他改成了 char str[100]; 之後, 這個問題就很靈異的解決了...XDDD 對了,我忍不住想要問一下。 為什麼 C++ 在宣告變數的時候,不自動把記憶體清成零呢? 畢竟沒有人會去想用記憶體裡的舊值吧。 如果自動清為零,感覺上應該是百利而無一害(嗎??)。 像這個例子,如果自動把 str = 0; 的話,應該就會發生存取違規了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.121.235.85

04/04 22:16, , 1F
char *str; cin>>str; 這是很典型的位配置空間就assign
04/04 22:16, 1F

04/04 22:17, , 2F
資料到指標位置去的錯誤啊@_@" 至於為什麼不配置空間就
04/04 22:17, 2F

04/04 22:17, , 3F
清成0, 因為清成0也是需要消耗CPU運算資源的, 如果PG確
04/04 22:17, 3F

04/04 22:18, , 4F
定會寫值, 這個清0的動作就是效能殺手, 不管是stack裡或
04/04 22:18, 4F

04/04 22:18, , 5F
heap裡; 不過malloc回來想自動清0, calloc可以做到這點.
04/04 22:18, 5F

04/04 22:19, , 6F
另外, 以VC來說, debug built會把區域變數的值都清成忘
04/04 22:19, 6F

04/04 22:20, , 7F
了是0xcc還是0xcd, 這樣VC可以幫你抓宣告但未始用的變數
04/04 22:20, 7F

04/04 22:22, , 8F
話說, struct/class實體好像也不適合套用這個清0的動作.
04/04 22:22, 8F

04/05 01:17, , 9F
memset也可以幫你初始化
04/05 01:17, 9F
文章代碼(AID): #19rsHhfq (C_and_CPP)
文章代碼(AID): #19rsHhfq (C_and_CPP)