掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Windows98でメモリ解放 (ID:51633)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
解決しているようなのですが、同等の現象がでてこまっています。 私は以下のようにCreateDIBSectionにてHBITMAPクラスを作成し 使用しているのですが、開放時はDeleteObjectを使用しメモリ開放 しているはずなのですが、98の場合のみ開放してくれません。 XP/2000では動作OKでした。 98では特別な開放の仕方もしくは、こうすれば無理にでも開放できる というやり方があれば参考にさせていただけないでしょうか? 以下 ソース一部抜粋 class CBitmapInfo { private: int m_cEntries; DWORD m_dwInfoSize; PBYTE m_pbmi; BITMAPINFOHEADER* m_pbmih; public: CBitmapInfo(); ~CBitmapInfo(); VOID Alloc(); BITMAPINFO *GetBitmapInfo() const { return (BITMAPINFO*)m_pbmi; }; BITMAPINFOHEADER *GetBitmapInfoHeader() const { return (BITMAPINFOHEADER*)m_pbmih; }; 〜中略〜 CBitmapInfo::Alloc(){ m_cEntries=0 DWORD dwSize = sizeof(BITMAPINFOHEADER) + (m_cEntries - 1) * sizeof(RGBQUAD) + nBitsSize; m_dwInfoSize = dwSize; m_pbmi = new BYTE[dwSize]; ::ZeroMemory(m_pbmi , dwSize); m_pbmih = (BITMAPINFOHEADER*)m_pbmi; m_pbmih->biSize = sizeof(BITMAPINFOHEADER); } BOOL CDIBitmap::Create(const int cx , const int cy ) { BOOL bResult = FALSE; HBITMAP m_hBitmap; DIBSECTION m_ds; CBitmapInfo bmInfo; bmInfo.Alloc(24 , 0); BITMAPINFOHEADER* pbmih = bmInfo.GetBitmapInfoHeader(); pbmih->biWidth = cx ; pbmih->biHeight = cy ; pbmih->biPlanes = 1 ; pbmih->biBitCount = 24 ; pbmih->biCompression = BI_RGB ; pbmih->biSizeImage = 0 ; pbmih->biXPelsPerMeter = 0 ; pbmih->biYPelsPerMeter = 0 ; pbmih->biClrUsed = 0 ; pbmih->biClrImportant = 0 ; int i; BITMAPINFO *pbmi = bmInfo.GetBitmapInfo(); m_hBitmap = ::CreateDIBSection(NULL , pbmi , DIB_RGB_COLORS , (void **)&m_pBits , NULL , 0); if(!m_hBitmap){ return bResult; } ::GetObject(m_hBitmap , sizeof(DIBSECTION) , &m_ds); } 〜省略〜 }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.