我如何释放hbitmap
作者:互联网
您好,我有以下函数,此后我将在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错误
谢谢,
解决方法:
我假设您正在使用C#.
您可以使用DeleteObject删除此HBITMAP.
像这样声明:
using System.Runtime.InteropServices class API { [DllImport("WINGDI32.dll")] public static extern int DeleteObject(IntPtr hObject); }
并删除对象:
API.DeleteObject(hBitmap);
由于函数返回指向HBITMAP的指针,因此不能在返回之前将其删除.相反,当不再使用此位图时,应将其删除得足够晚.
标签:hbitmap,memory-leaks,c 来源: https://codeday.me/bug/20191030/1970757.html