Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как освободить память?

282
02 января 2007 года
Bard
481 / / 26.02.2006
В теме Сохранить DC в *.bmp файл. Как реализировать? розсматривалась функция, которая сохраняет скрин екрана в bmp файл. Так вот, дело в том, что функция при многократном вызове кушает память громадными кусками (размер куска равен размеру битмапа).
Как освобождать память после сохранения битмапа в файл?
334
02 января 2007 года
HexEdit
809 / / 27.07.2006
Вначале выделять буфер через GlobalAlloc (ну или LocalAlloc, как больше нравится), а в конце освобождать через GlobalFree (или LocalFree соответственно)
1.8K
02 января 2007 года
k3Eahn
365 / / 19.12.2005
Вызови DeleteObject для DIB секции, DeleteDC для контекста экрана (DC) и для совместимого контекста (CDC).

P.S.: "Нагадил - убери" (c) кто-то.
282
02 января 2007 года
Bard
481 / / 26.02.2006
Цитата: k3Eahn
Вызови DeleteObject для DIB секции, DeleteDC для контекста экрана (DC) и для совместимого контекста (CDC).

P.S.: "Нагадил - убери" (c) кто-то.



Непомогает!

1.8K
02 января 2007 года
k3Eahn
365 / / 19.12.2005
А когда ты делаешь DeleteObject, ты из CDC забираешь битмап?
Возможно перед тем как удалить битмап стоит его извлечь из CDC.
282
02 января 2007 года
Bard
481 / / 26.02.2006
Цитата: k3Eahn
Возможно перед тем как удалить битмап стоит его извлечь из CDC.




Ето как?

1.8K
02 января 2007 года
k3Eahn
365 / / 19.12.2005
В контексте девайса изначально выбран битмап по умолчанию. Когда ты делаешь
 
Код:
invoke SelectObject,[CDC],[CBmp]
SelectObject возвратит тебе хэндл этого битмапа. Соответственно, ты его сохраняешь на время, а потом, когда тебе dib (это твой 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
;Продолжаешь чистить дальше...
282
02 января 2007 года
Bard
481 / / 26.02.2006
да уже стало на много лучше, но всеравно кушает 4 килобайта :(
260
03 января 2007 года
Ramon
1.1K / / 16.08.2003
И что же именно "кушает" ЦЕЛУЮ страницу, уж не код ли?
282
03 января 2007 года
Bard
481 / / 26.02.2006
Цитата: Ramon
уж не код ли?



Код, который сам себя копирует? Забавно...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог