你好我有以下函数,我后来从c#使用它来显示一个位图“Bitmap.FromHbitmap(IntPtr)”但在几次使用后,这以内存泄漏结束。
IntPtr GetFrame(int Width,int Height,int nFrame)
{
width= Width;
height = Height;
HBITMAP hb;
m_piHelper->GetBmp(width,height,nFrame,&hb);
return IntPtr(hb);
}
可能我应该删除对象,但我不知道我能做什么,我在返回之前尝试过但最终没有图像但是gdi错误
谢谢,
答案 0 :(得分:4)
我假设您使用的是C#。
您可以使用DeleteObject
删除此HBITMAP。
声明如下:
using System.Runtime.InteropServices class API { [DllImport("WINGDI32.dll")] public static extern int DeleteObject(IntPtr hObject); }
删除对象:
API.DeleteObject(hBitmap);
当您的函数返回指向HBITMAP的指针时,您无法在返回之前将其删除。相反,如果不再使用此位图,您应该在以后删除它。