Re: [問題] 請問BCB6 的記憶體配置
※ 引述《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
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章