[問題]三維動態陣列

看板C_and_CPP作者 (老洪)時間15年前 (2010/01/25 07:23), 編輯推噓5(5023)
留言28則, 11人參與, 最新討論串1/2 (看更多)
請問 我想做一個三維動態陣列 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

01/25 15:24, , 1F
改用64bit而且ram請加到16G以上...
01/25 15:24, 1F

01/25 15:29, , 2F
這跟上上篇好像
01/25 15:29, 2F

01/25 15:30, , 3F
動態的就不會 too large嗎..........
01/25 15:30, 3F

01/25 15:32, , 4F
原po請用迴圈的方式去配置
01/25 15:32, 4F

01/25 15:33, , 5F
這應該跟stack的大小限制有關, heap就看你能定址多少
01/25 15:33, 5F

01/25 15:33, , 6F
沒有出現to large~只是要run的時候就run不出來
01/25 15:33, 6F

01/25 15:43, , 7F
跑不出來是怎樣跑不出來, 把你問題描述清楚吧, 最好加上
01/25 15:43, 7F

01/25 15:43, , 8F
*p=(double**)malloc(n*n*sizeof(**p));這行開始有錯
01/25 15:43, 8F

01/25 15:44, , 9F
你所謂跑不出來的code, 與你預期"跑出來"什麼....
01/25 15:44, 9F

01/25 15:44, , 10F
順便說, 你要開 0x2CB417800 這麼大的記憶體喔 @_@"
01/25 15:44, 10F

01/25 15:48, , 11F
而且, 這個三維陣列的配置方式好怪....Orz
01/25 15:48, 11F

01/25 15:48, , 12F
按完F9要開始RUN 輸入我的n值後~就會出現一個視窗說
01/25 15:48, 12F

01/25 15:49, , 13F
發生問題~必須關閉
01/25 15:49, 13F

01/25 15:56, , 14F
所以應該是我三維動態陣列配置有問題.....= =a
01/25 15:56, 14F

01/25 17:08, , 15F
什麼問題需要跑這樣大的陣列 說不定你可以不用開這麼大
01/25 17:08, 15F

01/25 17:27, , 16F
3,000,000,000 個 element 了, 32 bit int 要 12GB
01/25 17:27, 16F

01/25 17:28, , 17F
所以你說問題出在哪裡?
01/25 17:28, 17F

01/25 18:59, , 18F
我也很好奇是什麼樣的問題需要這麼大的空間
01/25 18:59, 18F

01/25 19:46, , 19F
因為我想要寫我要寫一個變數x[m][n][s]~
01/25 19:46, 19F

01/25 19:49, , 20F
m不知道需要多少個,n要是要生100000個simulation,
01/25 19:49, 20F

01/25 19:51, , 21F
s=3,是每個simulation都會有3個值
01/25 19:51, 21F

01/25 19:52, , 22F
我想如果將s(=3)省略改成x0[m][n],x1[m][n],x2[m][n]
01/25 19:52, 22F

01/25 19:53, , 23F
3個二維陣列不知道會不會比較好?
01/25 19:53, 23F

01/25 20:10, , 24F
不會. 因為memory使用量還是一樣多
01/25 20:10, 24F

01/25 23:54, , 25F
你要看資料連續性的問題 最常用到的放在最後一維
01/25 23:54, 25F

01/25 23:55, , 26F
不過如果一次才用三個 那就沒差了 XD
01/25 23:55, 26F

01/26 10:29, , 27F
不要記在memory上阿...直接print out到file...
01/26 10:29, 27F

01/26 10:30, , 28F
這種模擬的數據都是一次性資料 直接輸出就好
01/26 10:30, 28F
文章代碼(AID): #1BNKRaTo (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BNKRaTo (C_and_CPP)