[問題] 動態記憶體配置

看板C_and_CPP (C/C++)作者 ( lebesgue)時間15年前 (2010/02/13 15:36), 編輯推噓7(7016)
留言23則, 8人參與, 最新討論串4/6 (看更多)
請問如果我要開啟大小為4000000000 的double 陣列, 但是malloc宣告中 size_t 是 4bype, 因此無法開到這麼大, 有辦法將size_t 改成 long long 嗎? 或是有沒有其他辦法? 謝謝大家~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.145.16

02/13 15:40, , 1F
先不管它幾 byte 這麼大的 double 陣列要佔32G....
02/13 15:40, 1F

02/13 15:41, , 2F
你真的要這麼大嗎?
02/13 15:41, 2F

02/13 16:40, , 3F
記得long long要在64bit的OS才有效
02/13 16:40, 3F

02/13 16:40, , 4F
用link-list做吧
02/13 16:40, 4F

02/13 17:03, , 5F
重點根本不是資料型態吧 ... 先生出 32G 的記憶體比較
02/13 17:03, 5F

02/13 17:04, , 6F
重要 XD
02/13 17:04, 6F

02/13 17:05, , 7F
真的有 32G 的話 ... 那用 calloc 碰碰運氣吧
02/13 17:05, 7F

02/13 21:05, , 8F
64bits OS + 64bits程式, 理論上有160"億"GB
02/13 21:05, 8F

02/13 21:06, , 9F
但CPU實際定址線沒有64bits, OS實際也還沒做到...
02/13 21:06, 9F

02/13 21:20, , 10F
你需要的是演算法
02/13 21:20, 10F

02/14 01:38, , 11F
沒有意義,單一程式定址得到 2G 以上再說。
02/14 01:38, 11F

02/14 01:40, , 12F
怎麼最近大家都在問這個....
02/14 01:40, 12F

02/14 01:41, , 13F
可以用多個檔案做暫存來用嗎?
02/14 01:41, 13F

02/14 03:40, , 14F
不小心寫太大, 大概是50000000大小, 所以只有2G
02/14 03:40, 14F

02/14 03:41, , 15F
我試過64bit, 受限於malloc無法設定如此大參數
02/14 03:41, 15F

02/14 03:43, , 16F
不好意思, 程式實際遇到的問題, 某些情況會用到如此多
02/14 03:43, 16F

02/14 14:32, , 17F
如果你要用 64-bit 的架構的話 compiler 也要設定成 64-bit
02/14 14:32, 17F

02/14 14:32, , 18F
不然就得像10F所說的 你得找一個不會用這麼大空間的演算法
02/14 14:32, 18F

02/14 14:33, , 19F
13F問的是個好問題 理論上可行
02/14 14:33, 19F

02/14 14:34, , 20F
實際上..這32G的硬碟空間的讀寫你得自行管理
02/14 14:34, 20F

02/14 14:34, , 21F
而且程式執行中就得佔掉這32G...
02/14 14:34, 21F

02/14 22:20, , 22F
自己管檔案總是比 OS 的 swap 好得多.. 畢竟你知道你想怎麼
02/14 22:20, 22F

02/14 22:20, , 23F
處理你的資料, 但是 OS 不知道
02/14 22:20, 23F
文章代碼(AID): #1BTbPhUH (C_and_CPP)
文章代碼(AID): #1BTbPhUH (C_and_CPP)