我一直在尝试使用存储在HBITMAP中的屏幕截图并将其存储为PNG图像。
但是,代码中似乎有内存泄漏,因为内存似乎没有正确释放。
void saveAsPNG(HBITMAP h)
{
CImage image;
if(_access(location, 0) == 0)
{
unlink(location); //Delete the image if currently exists
}
image.Attach(h);
image.Save(location,Gdiplus::ImageFormatPNG);
h = image.Detach();
image.Destroy();
image.ReleaseGDIPlus();
}
此代码有效,但似乎没有发生内存清理。根据任务管理器中的私有内存集列,image.Destroy根本不会影响内存,而image.ReleaseGDIPlus似乎会清理一些数据。 HBITMAP来自之前的函数,并且代码中的GlobalFreed稍后将与该函数分开。
是否缺少一条线?