Как освободить память?
Сохранить DC в *.bmp файл. Как реализировать? розсматривалась функция, которая сохраняет скрин екрана в bmp файл. Так вот, дело в том, что функция при многократном вызове кушает память громадными кусками (размер куска равен размеру битмапа).
Как освобождать память после сохранения битмапа в файл?
В теме
Как освобождать память после сохранения битмапа в файл?
Вначале выделять буфер через GlobalAlloc (ну или LocalAlloc, как больше нравится), а в конце освобождать через GlobalFree (или LocalFree соответственно)
P.S.: "Нагадил - убери" (c) кто-то.
Цитата: k3Eahn
Вызови DeleteObject для DIB секции, DeleteDC для контекста экрана (DC) и для совместимого контекста (CDC).
P.S.: "Нагадил - убери" (c) кто-то.
P.S.: "Нагадил - убери" (c) кто-то.
Непомогает!
Возможно перед тем как удалить битмап стоит его извлечь из CDC.
Цитата: k3Eahn
Возможно перед тем как удалить битмап стоит его извлечь из CDC.
Ето как?
Код:
invoke SelectObject,[CDC],[CBmp]
Код:
invoke SelectObject,[CDC],[CBmp]
push eax
invoke GetSystemMetrics,SM_CXSCREEN
mov [ResolutionX],eax
invoke GetSystemMetrics,SM_CYSCREEN
mov [ResolutionY],eax
invoke StretchBlt,[CDC],0,0,[_Width],[_Height],[DC],0,0,[ResolutionX],[ResolutionY],SRCCOPY
invoke CreateFile,[_FileName],GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0
mov [F],eax
invoke WriteFile,[F],Bfh,14,Written,0
invoke WriteFile,[F],Bih,44,Written,0
invoke WriteFile,[F],[Bmp],[Size],Written,0
push [CDC]
call SelectObject
invoke DeleteObject, eax
;Продолжаешь чистить дальше...
push eax
invoke GetSystemMetrics,SM_CXSCREEN
mov [ResolutionX],eax
invoke GetSystemMetrics,SM_CYSCREEN
mov [ResolutionY],eax
invoke StretchBlt,[CDC],0,0,[_Width],[_Height],[DC],0,0,[ResolutionX],[ResolutionY],SRCCOPY
invoke CreateFile,[_FileName],GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0
mov [F],eax
invoke WriteFile,[F],Bfh,14,Written,0
invoke WriteFile,[F],Bih,44,Written,0
invoke WriteFile,[F],[Bmp],[Size],Written,0
push [CDC]
call SelectObject
invoke DeleteObject, eax
;Продолжаешь чистить дальше...
да уже стало на много лучше, но всеравно кушает 4 килобайта :(
И что же именно "кушает" ЦЕЛУЮ страницу, уж не код ли?
Цитата: Ramon
уж не код ли?
Код, который сам себя копирует? Забавно...