当前位置: 代码迷 >> VC >> 怎样用Dispose将Bit地图^ ps1 = gcnew Bit地图(pictureBox18->Image)内存释放掉
  详细解决方案

怎样用Dispose将Bit地图^ ps1 = gcnew Bit地图(pictureBox18->Image)内存释放掉

热度:290   发布时间:2016-05-05 00:12:22.0
怎样用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
  相关解决方案