Re: [問題] 請問BCB6 的記憶體配置

看板Programming作者 (三億兩千萬大散戶)時間18年前 (2006/09/12 22:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
※ 引述《fredfrost (幸福就是妳)》之銘言: : __fastcall TForm1::TForm1(TComponent* Owner) : : TForm(Owner) : { : Graphics::TBitmap *a=new Graphics::TBitmap; : Graphics::TBitmap *b=new Graphics::TBitmap; : a->Width=10000; : a->Height=10000; : b->Width=10000; : b->Height=10000; : } : 我測試的時候 這麼幾行 就跳出記憶體不足 : 只是開一個畫布出來 還沒開始畫 我的目的是要畫圖 不是讀圖檔 : 如果用純c++ 應該也是不會當才是 : 所以應該是bcb的問題吧 不知道去哪改他的記憶體上限 不知道為何你一定要用TBitmap呢 像你這種大小的記憶體10000*10000*24bit = 300MB 就算用new也不見得能成功 至少我用VC測過new的限制大約幾百MB左右(在我電腦上512 RAM) 如果可以的話試試看CreateFileMapping, MapViewOfFile, ... 這組API 詳細用法請google 其實就是把一個檔案map到虛擬記憶體空間 MapViewOfFile就是開(map)一扇窗戶(view)來查看檔案的一段內容 之後會得到一個pointer 用這個pointer就可以把檔案當作記憶體一般做random access的動作 預設不指定檔名則使用系統pagefile.sys這個檔案 memory mapped file我有試過可以Create好幾G以上的空間 可以從工作管理員看到記憶體用量暴增 (不過CPU loading並不會增加因為你還沒作存取動作) 也可以看到pagefile.sys的大小一定會跟著爆增 所以我猜如果是NTFS磁區就看你硬碟可用空間還有多大 就可以成功create多大的file mapping 不過當然一個process一次最多只能map到2G的view 這是Win32的限制 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.204.133.140
文章代碼(AID): #151iBLfo (Programming)
文章代碼(AID): #151iBLfo (Programming)