線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1995
推到 Plurk!
推到 Facebook!

關於超大的陣列

尚未結案
bliard
一般會員


發表:1
回覆:0
積分:0
註冊:2005-01-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-17 01:09:33 IP:140.124.xxx.xxx 未訂閱
如題.... 因為程式中會使用到100000*100000二維陣列 可是complier後整個BCB就當掉了.... 個人猜想應該是記憶體不足造成的.... 因為換算過來即使是char的資料型態... 也要10G的記憶體,我還是想用浮點.... 我想變出N十G的RAM應該是不可行的... 請問一下有無較佳的解決方案??? 附帶好多問 如果想利用寫檔的方式會比利用虛擬記憶體的來的快嗎? 還是我只要能利用一個較佳的方法搜尋檔案中某位置的值就能比利用虛擬記憶體來的有效率?? 假設我用new來動態配置記憶體,那在程式執行時他會自動將這超級大的陣列放入虛擬記憶體中嗎??還是我需要些改哪些設定??? 謝謝!!
stellos
中階會員


發表:24
回覆:84
積分:51
註冊:2004-06-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-17 01:29:02 IP:220.138.xxx.xxx 未訂閱
我沒試過配這麼大的 不過我配過1G的記憶體 char *buf[20000]; for(int i=0;i<20000;i ) buf[i]=new char[16384]; 我是這樣配二維的 如果直接配1G我試過配不出來 我是有2G的Ram啦 若沒有那麼大,我想它應該會幫我用磁碟記憶體配 寫檔你不要去想那方法...很慢 我配的1G寫到檔案已花不少時間 相信10G有你等的
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-17 08:40:22 IP:61.66.xxx.xxx 未訂閱
bliard你好 在Project->Option->Linker->PE file options中可以改變stack size的上限 你可以試著改一下 不過你要配置10G我想這是不可能的 32位元作業系統的定址能力是2的32次方 也就是可以定址到4G,要配置10G我不知道可不可以 就算可以,我覺得這樣配置也是不合理的 我想,你這麼多的資料量,應該要拆成幾個部份,把你要用到的部分在載入 不要一口氣都把資料較入記憶體,這是資料量少的時候才用的方法
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-17 08:58:32 IP:211.75.xxx.xxx 未訂閱
樓上的,跟你拍拍手.
系統時間:2024-05-07 7:41:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!