剛剛拿 GCC 試過了,
會有 warning:
Warning: address of local variable `str' returned
這已經說明了 compiler 不認為 point to constant char array 是
literal string 了。
無論後面執行結果如何,這行程式都是有問題的。
看來我得把我之前的話吞回去了 :p
※ 引述《cole945 (躂躂..)》之銘言:
: > Arton0306:這裡我印出亂碼耶@@
: 我手邊是用GCC/3.4.4編譯的@_@"
: 我剛剛用VC2005測了一下..
: 可能是因為VC在pop後又放了別的東西回stack
: 所以資料被蓋掉了..
: 在兩個function的 str宣告前面再多宣告一個
: char tmp[500];
: 並且把最佳化關掉(或用debug執行)
: 就可以看到這個結果 :X
: --
: 我主要是要說明
: char array 與 指向 string-literal 的 pointer 並不相同..
: 所以舉了個例子用來蓋 char array的資料..
: 沒拿vc測過所以沒注意到這個問題..
: 請多包涵 orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.175.202