我正在嘗試創建一個簡單的遊戲,但我無法找到某個內存泄漏。該程序每隔一秒左右,似乎使用3mb多的內存。繪畫上的內存泄漏
問題在於這種繪製方法。如果我不叫這個方法,一切正常。我想畫在屏幕的幾個部分精靈:
void Map::draw(HDC hBackBufferDC)
{
for(int i = 0; i < 24; i++)
{
for(int j = 0; j < 27; j++)
{
if(mapState[i][j] == 'm')
{
blueWall->draw(hBackBufferDC, new Position(j, i));
}
}
}
}
如果我刪除平局的方法調用,不存在任何問題,所以這個問題是在方法:
void StaticSprite::draw(HDC hBackBufferDC, Position* pos)
{
int x = (int)pos->x * 22;
int y = (int)pos->y * 22;
HGDIOBJ oldObj = SelectObject(this->hSpriteDC, this->hMask);
BitBlt(hBackBufferDC, x, y, 22, 22, this->hSpriteDC, 0, 0, SRCAND);
SelectObject(this->hSpriteDC, this->hImage);
BitBlt(hBackBufferDC, x, y, 22, 22, this->hSpriteDC, 0, 0, SRCPAINT);
SelectObject(this->hSpriteDC, oldObj);
}
任何想法是什麼在這裏造成內存泄漏?我認爲這與這部分有關,但如果需要,我可以發佈代碼的其他部分。
謝謝
爲什麼`StaticSprite :: draw`將`Position`參數作爲指針?順便說一句,選擇代碼並按下`CTRL + K`來格式化代碼。 – Naveen 2011-02-16 11:08:39
Just FUI - 縮進整個代碼塊,不要使用`(反向)符號,選擇代碼塊並按下代碼編輯器上方的代碼鍵:) – gnud 2011-02-16 11:11:06