Форум: "Основная";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];
ВнизФункция скриншота кушает память Найти похожие ветки
← →
hoolio (2011-10-19 09:13) [0]Помогите исправить, если запустить в цикле, память быстро скушивается. Очистка не проходит?
function GetScreenShot(PixelFormat:TPixelFormat;Width,Height:Integer): TBitmap;
var
Desktop: HDC;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := PixelFormat;
Result.Width := Width;
Result.Height := Height;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
end;
← →
Dimka Maslov © (2011-10-19 09:40) [1]А полученные объекты класса TBitmap таки освобождаются где-нибудь?
← →
hoolio (2011-10-19 09:52) [2]Дело в функции, так как при вызове идет забивка памяти
Вот так забивает память очень быстро, буквально за несколько минутWhile true do
GetScreenShot(pf24Bit,screen.Width,screen.Height);
В коде освобождаются вот так:
var
bmp_scr:TBitmap;
begin
bmp_scr:=GetScreenShot(pf24Bit,screen.Width,screen.Height);
bmp_scr.free;
Так что дело в функции. Где утечка?
← →
hoolio (2011-10-19 09:57) [3]Видимо действительно дело не в функции, а в последующей очистке.
Попробую разобраться.
← →
sniknik © (2011-10-19 10:02) [4]> Вот так забивает память очень быстро, буквально за несколько минут
> While true do
> GetScreenShot(pf24Bit,screen.Width,screen.Height);
> А полученные объекты класса TBitmap таки освобождаются где-нибудь?
тебя же спросили.
вот так проверяйWhile true do
GetScreenShot(pf24Bit,screen.Width,screen.Height).Free;
хотя, тут еще зависит от того где и как мерять... винда не всегда память при освобождении "перетасовывает" чтобы в кучу вернуть.
← →
hoolio (2011-10-19 10:40) [5]Да, вы правы, вопрос решил, переписал все функции в одну процедуру, теперь освобождается память.
← →
Anatoly Podgoretsky © (2011-10-19 12:54) [6]Но в приведеном коде, освобождение только при ошибке.
А вот в кодеbmp_scr:=GetScreenShot(pf24Bit,screen.Width,screen.Height);
bmp_scr.free;
Первая функия бессмыленна.
← →
Dimka Maslov © (2011-10-19 13:19) [7]
> Anatoly Podgoretsky © (19.10.11 12:54) [6]
Смысл действа в снятии скриншотов, а не в их последующем использовании.
← →
скриншот (2011-10-19 13:42) [8]дайте пожрать,нелюди
← →
Anatoly Podgoretsky © (2011-10-19 14:18) [9]> Dimka Maslov (19.10.2011 13:19:07) [7]
Зачем их снимать, если битмап сразу же уничтожается.
← →
Dimka Maslov © (2011-10-19 19:03) [10]
> Зачем их снимать, если битмап сразу же уничтожается.
Подвиг царя Сизифа вдохновляет многих и в нашу годину суровых нанотехнологий.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c