[計程] [C] 陣列宣告太大就當掉的原因。

作者: andy88566y (貓龍)   2013-10-09 22:13:43
同學好,
有同學反應當陣列宣太大程式就會當掉。例如
int arr1[20][20]; 這樣做沒問題,測資也通過。
int arr2[512][512]; 這樣做程式在自己電腦竟然直接當掉,但傳
到judgegirl是全對5分。
這是由於記憶體大小的關係。sizeof(arr2)是4x512x512,大約1MB
有些比較差的作業系統(比如Windows)限制只能用不超過1MB記憶體
所以arr2會導致值程式當掉。如果你使用Linux,Mac等,arr2就沒
問題。
因此如果同學在Windows下寫程式,遇到這問題解法有:
1. 捨棄Windows,使用更適合寫程式的作業系統如Linux
2. 在編譯時加上參數 -Wl,
作者: skgg (skg)   0000-00-00 00:00:00
最簡單的方法是宣告在main上面就好~
作者: winston1907 (winston)   0000-00-00 00:00:00
有些比較差的作業系統(比如Windows) XD
作者: kchiazo (不要該該叫)   0000-00-00 00:00:00
呵呵我計概的時候就偷聽到強者說了
作者: Hyww13 (hyww)   0000-00-00 00:00:00
原來有這種事(筆記
作者: mudream (藍雪)   0000-00-00 00:00:00
直接用map(逃
作者: cebrusfs (可魯貝洛斯)   0000-00-00 00:00:00
linux 預設 8MB 只大8倍,還是很容易爆的...

Links booklink

Contact Us: admin [ a t ] ucptt.com