Вниз
Скачать: CL | DM;

освобождение ресурсов   Найти похожие ветки 

 
aleko   (2007-01-24 22:28) [0]

Всем доброго еще раз, никак не могу въехать, как правильно
так:


var
Bmp: TBitmap;

...

  try

     Bmp := TBitmap.Create;

     // что-то делаем с Bmp    

  finally

     Bmp.Free;

  end;

...


или так:


var
Bmp: TBitmap;

...

Bmp := TBitmap.Create;

  try

 // что-то делаем с Bmp

  finally

     Bmp.Free;

  end;

...


в различных примерах всегда встречается второй вариант, хотя по идее логичнее первый, вдруг у системы недостаточно ресурсов для выделения памяти, или я не правильно думаю?


 
Джо ©   (2007-01-24 22:32) [1]

Вариант (2) — правильный. Соответственно, вариант (1) — совсем неправильный.


 
Loginov Dmitry ©   (2007-01-24 22:34) [2]

> или я не правильно думаю?


Совсем неправильно.


 
TRUNK ©   (2007-01-24 22:36) [3]


> Джо ©   (24.01.07 22:32) [1]

Полностью с тобой согласен.


 
Джо ©   (2007-01-24 22:39) [4]

> хотя по идее логичнее первый, вдруг у системы недостаточно
> ресурсов для выделения памяти, или я не правильно думаю?

Смотри.

Obj := TObj.Create;
try
 // working with Obj
finally
 Obj.Free
end;

Если при Create случится исключение, то, в согласии с правилом Object Pascal, автоматически вызовется деструктор. То есть, выполнение Obj.Free не нужно.


 
Loginov Dmitry ©   (2007-01-24 22:42) [5]

to aleko

Вот почитай: http://matrix.kladovka.net.ru/index.php?page=tryfinally


 
Джо ©   (2007-01-24 22:44) [6]

> [4] Джо ©   (24.01.07 22:39)

Забыл дописать. Мало того, если в конструкторе произойдет исключение, то присваивание значение переменной Obj в выражении Obj := TObj.Create — НЕ произойдет, и там  будет содержаться черт-знает-что. Соответственно, вызов Obj.Free — чреват черт-знает-чем.


 
aleko   (2007-01-24 23:09) [7]

Спасибо,  наставили на путь истинный, пойду читать ссылку :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
2-1169635361
Kotofeich
2007-01-24 13:42
2007.02.11
Как пользоваться lib библиотекой


1-1166531767
iXT
2006-12-19 15:36
2007.02.11
TService


2-1169710887
Егоров А.Н.
2007-01-25 10:41
2007.02.11
Кавычки в текстовых полях SQL-запросов


15-1169382268
NikNet
2007-01-21 15:24
2007.02.11
Где скачать редактор для SQL (sybase) с наворотами...


2-1169625903
dest81
2007-01-24 11:05
2007.02.11
sql и *.txt




   Наверх