Я написал небольшую процедуру в ассемблере, чтобы нарисовать некоторый текст на экране (сначала он записывает в буфер, затем копирует буфер на экран с помощью BitBlt)
Функция работает хорошо, и она рисует каждые 25 мс, но я заметил, что использование памяти увеличивается со временем и сильно увеличивается.
Сначала я попытался освободить буфер DC, а затем удалил растровое изображение, создав новое, чтобы посмотреть, освободилась ли память, но она не работает, есть ли способ уменьшить использование памяти?
вот мой код
backh dd 0
bmph dd 0
isless db 1
zerod dd 0
initmenu:
invoke GetDC,0
invoke CreateCompatibleDC,eax
mov [backh],eax
invoke GetDC,0
invoke CreateCompatibleBitmap,eax,140,250
mov [bmph],eax
invoke SelectObject,[backh],[bmph]
invoke SetBkMode,[backh],TRANSPARENT
invoke SetTextColor,[backh],33CC00h
retn
updatescreen:
invoke GetDC,0
mov [zerod],eax
mov cl,[isless]
test cl,cl
jnz @f
invoke BitBlt,[zerod],0,0,140,250,[backh],0,0,SRCCOPY
jmp _updatescreenend
@@:
invoke BitBlt,[zerod],0,0,140,25,[backh],0,0,SRCCOPY
_updatescreenend:
invoke ReleaseDC,[zerod]
retn
menuproc:
invoke Sleep,25
call updatemenu
jmp menuproc