ゲームをつくってるんですが、メモリ使用量が増え続けて困っています。
メモリ使用量を減らす方法などありましたら教えてください。
よろしくお願いします。
メモリ使用量を減らす方法
作ったデバイスコンテキスト等は解放してますか?
ローカルで作成されたデバイスコンテキストやビットマップなどは、そのローカル内で解放させなければなりません。
グローバルで作成したデバイスコンテキスト等はプログラム終了時(RADツールで作ったプログラムならMainWnd_Destroy内)で解放してやります。
ちなみに、CreateCompatibleDCで作成されたデバイスコンテキストはDeleteDC、GetDCで取得したデバイスコンテキストはReleaseDCで解放してやります。
また、ビットマップ、ブラシ、フォントなどのオブジェクトをデバイスコンテキストに適用した場合、先にデバイスコンテキストから解放してやらないと、オブジェクトを解放することが出来ませんので注意。
例:
ローカルで作成されたデバイスコンテキストやビットマップなどは、そのローカル内で解放させなければなりません。
グローバルで作成したデバイスコンテキスト等はプログラム終了時(RADツールで作ったプログラムならMainWnd_Destroy内)で解放してやります。
ちなみに、CreateCompatibleDCで作成されたデバイスコンテキストはDeleteDC、GetDCで取得したデバイスコンテキストはReleaseDCで解放してやります。
また、ビットマップ、ブラシ、フォントなどのオブジェクトをデバイスコンテキストに適用した場合、先にデバイスコンテキストから解放してやらないと、オブジェクトを解放することが出来ませんので注意。
例:
コード: 全て選択
Sub MainWnd_Paint(hDC As DWord)
Dim hADC As HDC, hWndDC As HDC, hBmp As HBITMAP
hWndDC = GetDC(hMainWnd)
hBmp = CreateCompatibleBitmap(hWndDC, 640, 400)
hADC = CreateCompatibleDC(hWndDC)
SelectObject(hADC, hBmp)
BitBlt(hDC, 0, 0, 640, 400, hADC, 0, 0, SRCCOPY)
'解放
DeleteDC(hADC)
DeleteObject(hBmp)
ReleaseDC(hWndDC)
End Sub
そのメモリの内容が不要になった時にそのメモリ領域を開放すればよいのではないでしょうか。
どのような関数で,どんな目的で使うのか見せていただけませんか?
どのような関数で,どんな目的で使うのか見せていただけませんか?
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================