[爆卦]動態陣列malloc是什麼?優點缺點精華區懶人包

為什麼這篇動態陣列malloc鄉民發文收入到精華區:因為在動態陣列malloc這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者cocoxyz1129 (老洪)看板C_and_CPP標題[問題]三維動態陣列時間Mon Jan...


請問
我想做一個三維動態陣列
int p[10000][100000][3]
則會出現"size of array 'p' is to large"

那如果用動態陣列(以下)

p=(double***)malloc(n*sizeof(*p));
*p=(double**)malloc(n*n*sizeof(**p));
**p=(double*)malloc(n*n*n*sizeof(***p));
for(i=0;i<n;i++) *(p+i)=*p+i*n;
for(i=0;i<n;i++) **(p+i)=**p+i*n*n;

又跑不出來

不知道是哪邊出了問題
可以請大家幫幫我嗎?麻煩各位了!!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.114.156
pico2k:改用64bit而且ram請加到16G以上... 01/25 15:24
loveme00835:這跟上上篇好像 01/25 15:29
Yshuan:動態的就不會 too large嗎.......... 01/25 15:30
loveme00835:原po請用迴圈的方式去配置 01/25 15:32
loveme00835:這應該跟stack的大小限制有關, heap就看你能定址多少 01/25 15:33
cocoxyz1129:沒有出現to large~只是要run的時候就run不出來 01/25 15:33
VictorTom:跑不出來是怎樣跑不出來, 把你問題描述清楚吧, 最好加上 01/25 15:43
loveme00835:*p=(double**)malloc(n*n*sizeof(**p));這行開始有錯 01/25 15:43
VictorTom:你所謂跑不出來的code, 與你預期"跑出來"什麼.... 01/25 15:44
VictorTom:順便說, 你要開 0x2CB417800 這麼大的記憶體喔 @_@" 01/25 15:44
VictorTom:而且, 這個三維陣列的配置方式好怪....Orz 01/25 15:48
cocoxyz1129:按完F9要開始RUN 輸入我的n值後~就會出現一個視窗說 01/25 15:48
cocoxyz1129:發生問題~必須關閉 01/25 15:49
cocoxyz1129:所以應該是我三維動態陣列配置有問題.....= =a 01/25 15:56
utomaya:什麼問題需要跑這樣大的陣列 說不定你可以不用開這麼大 01/25 17:08
adrianshum:3,000,000,000 個 element 了, 32 bit int 要 12GB 01/25 17:27
adrianshum:所以你說問題出在哪裡? 01/25 17:28
bugmens:我也很好奇是什麼樣的問題需要這麼大的空間 01/25 18:59
cocoxyz1129:因為我想要寫我要寫一個變數x[m][n][s]~ 01/25 19:46
cocoxyz1129:m不知道需要多少個,n要是要生100000個simulation, 01/25 19:49
cocoxyz1129:s=3,是每個simulation都會有3個值 01/25 19:51
cocoxyz1129:我想如果將s(=3)省略改成x0[m][n],x1[m][n],x2[m][n] 01/25 19:52
cocoxyz1129:3個二維陣列不知道會不會比較好? 01/25 19:53
Fenikso:不會. 因為memory使用量還是一樣多 01/25 20:10
justdemon:你要看資料連續性的問題 最常用到的放在最後一維 01/25 23:54
justdemon:不過如果一次才用三個 那就沒差了 XD 01/25 23:55
Hitmear:不要記在memory上阿...直接print out到file... 01/26 10:29
Hitmear:這種模擬的數據都是一次性資料 直接輸出就好 01/26 10:30

你可能也想看看

搜尋相關網站