c# intPtr 内存泄漏问题
我的这个程序是C#调用C++使用OpenCV实现二值图片缩放。返回数组c#再处理。
是在线程foreach循环中的,运行一段时间就内存飙升,怀疑内存泄露。
或者bmpimage.Save("Image\\" + (i + 1) + ".tiff", ImageFormat.Tiff);对象被占用。
或者主程序 Application.Run(new Fmain());对象被占用。
对象被占用的情况还是偶尔出。好头疼。困扰我多时了。我不知道我在循环中申请的intPtr到底改不改释放。
foreach (VDP_PictureBox.VDP_PictureBox pic in list_picture)
{
Bitmap bit3 = VDP_QrCodeEncoder.Encode(pi[i - index].urlStr.ToString());//生成一个bit3图像。
resize = (float)(pic.pictureBox1.Width) / (float)(bit3.Width);//获取缩放比例
BitmapInfo bina = GetImagePixel(bit3);//BitmapInfo是一个类。将图像转换成数组。代码略了。
int width = bit3.Width;
int height = bit3.Height;
int step = bina.Step;
if(Bitmap_mutex.WaitOne() == true)
{
IntPtr dst = showImages(out width, out height, out step, resize, bina.Result);//这里的dst需要释放么?
Bitmap img = new Bitmap(width, height, step, System.Drawing.Imaging.PixelFormat.Format32bppArgb, dst);
pic.pictureBox1.Image = img;
using (Graphics g3 = Graphics.FromImage(bmpimage))
{
g3.DrawImage(img, new Rectangle((int)((pic.Left + 5) * param),
(int)((pic.Top + 5) * param),
img.Width,
img.Height),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
}
bmpimage.Save("Image\\" + (i + 1) + ".tiff", ImageFormat.Tiff);//老是对象被占用。我改如何解决呀。
Bitmap_mutex.ReleaseMutex();
}