Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
15-1169277534
lookin
2007-01-20 10:18
2007.02.11
Верх удовольствия от утреннего просмотра "Ивана Васильевича"...


15-1168832741
Slider007
2007-01-15 06:45
2007.02.11
С днем рождения ! 13 января


15-1169128448
oldman
2007-01-18 16:54
2007.02.11
Трабл с Office-97


6-1157662385
Officeman
2006-09-08 00:53
2007.02.11
IdHTTP1. как получить контент страницы html ?


15-1169158353
hmmcensured
2007-01-19 01:12
2007.02.11
накрутка посещаемости и кликов (adSense)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский