我怎样才能免费获得hbitmap

时间:2013-06-05 15:35:26

标签: c# memory-leaks 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错误

谢谢,

1 个答案:

答案 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的指针时,您无法在返回之前将其删除。相反,如果不再使用此位图,您应该在以后删除它。

相关问题