0

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 になります。

行がありませんか?

4

0 に答える 0