其他分享
首页 > 其他分享> > 我如何释放hbitmap

我如何释放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