怎样用Dispose将Bitmap^ ps1 = gcnew Bitmap(pictureBox18->Image)内存释放掉?
各位朋友,小弟想在vs2010的Widows Form Application中的VC++,循环地将文件夹F:\\Microsoft Visual Studio 2010的所有图片导入pictureBox1,并取其RGB三通道灰度值,由于每循环一次通过Bitmap^ ps1 = gcnew Bitmap(pictureBox1->Image)将新建位图内存,多次累积导致内存不够用,代码如下
for (k = 0; k != 50; ++k)
{
stream.str("");
stream<<k;
s=stream.str();
String^ str2 = gcnew String(s.c_str());
ImgPath = "F:\\Microsoft Visual Studio 2010\"+str2+".jpg";
pictureBox18->Image = Image::FromStream(gcnew MemoryStream(File::ReadAllBytes(ImgPath)));
Bitmap^ ps1 = gcnew Bitmap(pictureBox18->Image);
for (i=0; i!=8; ++i)
{
for (j=0; j!=8; ++j)
{
psc1 = ps1->GetPixel(i, j);
psr=psc1->R;
psg=psc1->G;
psb=psc1->B;
}
}
}
加载到k=23时出现异常:
经过网上大量搜索寻求解决方法,得知需要在循环加入Dispose()销毁图像占用的内存,但是找不到Dispose的具体用法,怎样用Dispose将内存释放掉啊?请各位朋友帮助,谢谢啊 在线等… 怎样用Dispose将内存释放掉?
[解决办法]
直接用就可以了,在ps1每次使用完后ps1.Dispose()
可以用try-finally块包含,在finally中释放
[解决办法]
delete