作者fredfrost (幸福就是你)
看板Programming
标题Re: [问题] 请问BCB6 的记忆体配置
时间Tue Sep 12 14:39:38 2006
※ 引述《[email protected] (台湾黑山猪)》之铭言:
: ※ 引述《[email protected] (幸福就是你)》之铭言:
: > 我有一个程式 要画很大的图档 我用Image里的Bitmap
: > 为了不要让整个REPAINT的动作变得很难看
: > 所以又new了一个TBitmap的Buffer
: > 现在呢 初始化的时候的时候
: > 因为有的图真的很大 大概10000x10000的
: > 什麽事都没做 光开个视窗 就占5M
: > 开两个7000x4000的时候 整个程式占记忆体8M
: > 那开了两个10000X10000Bitmap 导致整个记忆体不足??
: > 因为我记忆体有2G 所以感觉上应该是Borland的设定问题
: > 请教版上得高手有没办法帮我解决 不然就要用VS重写一个了@@
: 刚刚试了以下的程式码
: int *A=new int[10000*10000];
: int *B=new int[10000*10000];
: for(int i=0;i<10000;i++)
: for(int j=0;j<10000;j++)
: {
: A[i*10000+j]=0;
: B[i*10000+j]=0;
: }
: delete [] A;
: delete [] B;
: 根据Windows供作管理员的说法:记忆体从345直接跳到1.08G,
: 没有出现记忆体不足的问题,我的记忆体只有512Mb。
: 我猜是记忆体管理的问题,许多片片段段的记忆体造成 memory fragment???
: 给个建议,若你要处理这麽大张的图档,尽可能就让他躺在硬碟里,
: 用 WindowsAPI 中有一个叫档案映射的方法去处里他。
: 这个可以请 google神帮你找答案,
__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的问题吧 不知道去哪改他的记忆体上限
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.166.16