您好,我有以下函数,此后我将在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的指针,因此不能在返回之前将其删除。相反,当不再使用此位图时,应将其删除得足够晚。
关于c# - 我如何释放Hbitmap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16944048/