私はC++を使ってWindowsアプリケーションを開発しています。 LoadImageを使用してbmpファイルをDCにロードすると、正しく表示されます。しかし、DeleteObjectを呼び出すと、メモリが解放されていないように見えます。私はこれを行うWM_INITDIALOGの一部でLoadImageとDeleteObjectの使い方は?
(私はメモリ使用量を追跡するために、Windowsのタスクマネージャを使用):
static HBITMAP hBitmap = 0;
char* tempPath = "tabView.bmp";
hBitmap = (HBITMAP)LoadImage(NULL,
tempPath, // file containing bitmap
IMAGE_BITMAP, // type = bitmap
0, 0, // original size
LR_LOADFROMFILE); // get image from a file
if(hBitmap)
{
SendMessage(GetDlgItem(hwndDlg, IDC_PICTURE),
STM_SETIMAGE, // message to send
(WPARAM)IMAGE_BITMAP, // bitmap type
(LPARAM)hBitmap); // bitmap handle
}
ので、絵がDCに表示され、メモリが増加します。そして、ボタンで私はそうです:
私がボタンを押すと、私は結果をチェックし、それは成功していますゼロ以外の値です。しかし、IDC_PICTUREはまだ画像を表示し、メモリは同じままです。 SendMessage()がhBitmapのrefカウントを増加させるかどうか疑問に思っています...
私の質問は次のとおりです。どのような方法でクリーンアップできますか?
タスクマネージャは、漏れているかどうかを確認するのには適していません。永遠に走るループに入れて、メモリが足りなくなったかどうか確認してください。 –