[問題] 如何擴大array的總記憶體大小?

看板C_and_CPP (C/C++)作者 (金屬製品)時間16年前 (2009/06/15 12:10), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/3 (看更多)
不好意思 小弟對硬體不太熟 可能會問出蠢問題... 就是array大小要怎麼擴增呢? 比如說我的array一開始宣告他的最大可放的大小10*10*4*4 complex<double>D[10][10][4][4] 大概這樣就到極限了 但是我的程式可能要寫個D[10][10][4][4][3][3] 我想應該不行... 或是D[20][20][4][4] 也會暴 也就是這個總記憶體大小不能超過兩三萬個格子.... 當然如果把double變成是比較小的比如說int當然是可以擴展啦 但因為我做的是科學運算 所以double這個是要維持精準度..沒辦法改 這個array的記憶體大小是c++內建的限制嗎?(我猜得)可以解除這個限制吧? 有什麼簡單的方法去解除這個限制呢? 我用的是visual 2008 c++ fortran好像沒有記憶體大小的限制喔?那c語言有嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.81.223

06/15 12:15, , 1F
是 stack 的限制. 改由 heap alloc memory, 或用vector
06/15 12:15, 1F

06/15 15:14, , 2F
c malloc() calloc() c++ new
06/15 15:14, 2F

06/15 17:02, , 3F
static complex<double>D[10][10][40][2000]; 大概吃個一百多M
06/15 17:02, 3F

06/15 17:02, , 4F
但必須要注意,static的lifetime是整個程式結束為止才釋放
06/15 17:02, 4F

06/15 18:59, , 5F
所以加了static 就可以在記憶體內幾乎無限放大囉?
06/15 18:59, 5F

06/15 19:01, , 6F
我OS不是讀得很熟,不過有OS提供的虛擬記憶體加持,如果你設超
06/15 19:01, 6F

06/15 19:02, , 7F
過實體記憶體,應該會把部份放到硬碟去,所以應該可以設到比你
06/15 19:02, 7F

06/15 19:03, , 8F
的實體記憶體,假設512MB,還要多,比如600。極限多少我不知道
06/15 19:03, 8F

06/15 19:27, , 9F
謝謝你^^ 感謝!!
06/15 19:27, 9F

06/22 01:54, , 10F
我怎麼會想用 串列List?? 難到我病了麻?
06/22 01:54, 10F
文章代碼(AID): #1ADSczOl (C_and_CPP)
文章代碼(AID): #1ADSczOl (C_and_CPP)