推 Clangpp: 沒那麼小吧?? 一個float 64位元的系統算 8byte好了 01/05 23:17
→ Clangpp: 20萬 * 8btye 差不多 150幾MB 01/05 23:19
→ overhead: 不能看總memory OS會為你的process開空間(stack heap那 01/05 23:23
→ overhead: 些) 01/05 23:24
→ overhead: 我查了一下 VC++的預設最大stack是1MB 用win32算 01/05 23:37
→ overhead: 4*50000*4byte=接近800KB 好像還算合理? 01/05 23:38
推 LPH66: 這問題跟東西在哪裡很有關係, 不同地方有不同的限制 01/05 23:38
推 Clangpp: 慘了 我算錯了是 1.5MB... 01/05 23:53
推 laladeer: 改用動態宣告吧 01/06 00:27
推 stupid0319: 跟虛擬記憶體還有分頁大小有關,跟實體記憶體多大無關 01/06 00:37
推 chchwy: 先說你的array是區域變數還是全域變數 01/06 12:32
感謝各位大大的建議
其中chchwy大的建議非常有用 從local改成global就可以run了#
^^^^^^^^
所以會因為local_array及global_array的不同而有不同的記憶體安排了!?
所以小弟整理原因如下:
「
因為main()函數宣告的array會從stack擠出
所以很快就會overflow
而宣告於global仍是在stack,但因為預留空間而比較不會有overflow的問題.
(因此我array改成global 後就ok了)
最後, 我的例子是靜態宣告,所以不會用到heap.
」
不知道如此理解是否正確,再次感謝m(.__.)m
※ 編輯: alen332l (114.42.49.129), 01/06/2016 21:41:45
推 overhead: 錯了吧 宣告於global的未初始化變數是放在BSS 01/06 22:34
→ overhead: 可google "data segment" 01/06 22:35
→ alen332l: $ 05/10 17:42