간단한 게임을 만들려고하지만 특정 메모리 누수를 찾을 수 없습니다. 1 초마다, 프로그램은 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' 매개 변수를 포인터로 사용하는 이유는 무엇입니까? BTW, 코드를 선택하고 CTRL + K를 눌러 코드를 포맷하십시오. – Naveen
그냥 FUI - 전체 코드 블록을 들여 쓰려면'(역 따옴표) 기호를 사용하지 말고 코드 블록을 선택하고 편집기 위의 코드 키를 누르십시오 :) – gnud
그래, 고쳐 주셔서 고맙습니다. 나는 다음 번에 그것을 시도 할 것이다 :) – Bv202