在函數內部定義的數組儲存在棧中,而棧的大小是有限制的,並不是你電腦的全部內存。不同平臺下的棧大小不同,也可以用編譯參數設定不同的棧尺寸。你的數組大小超過了棧許可的空間,從邏輯上當然看不出問題,而你又使用C99的VLA,當然更讓你看不出問題。對C99的VLA不以為然,我也不是第一次說的了,你這次恰好給了一個現成例子而已,好。
還有哦,你不要以為棧的大小是1M(微軟編譯器)或4M(gcc編譯器),就可以用盡哦,函數壓棧、其他局部數據等等,都要用棧空間,關鍵是剩下多少空閒的你可用,那可是隨著程序運行而動態變化的,不要以為偶然一次成功,就當這樣寫對了。
[ 本帖最后由 TonyDeng 于 2015-10-12 16:53 编辑 ]
還有哦,你不要以為棧的大小是1M(微軟編譯器)或4M(gcc編譯器),就可以用盡哦,函數壓棧、其他局部數據等等,都要用棧空間,關鍵是剩下多少空閒的你可用,那可是隨著程序運行而動態變化的,不要以為偶然一次成功,就當這樣寫對了。
[ 本帖最后由 TonyDeng 于 2015-10-12 16:53 编辑 ]
授人以渔,不授人以鱼。