Код:
- вообще говоря потенциально содержит проблему.
Корректнее было бы конечно написать так:
Хотя конечно же - во всём надо знать меру.
Но! Если скажем внутри Free освобождается какой-нибудь ресурс - например закрывается файл или освобождается критическая секция, то может быть стоит подумать и о перфекционизме.
Один мой знакомый придумал другую технику - он складывает все ресурсы в "массив" (список etc) и освобождает в цикле, позволив выполнится каждой итерации. А вот Exception он поднимает на выходе.
В общем - поле для размышлений - тут есть.
destructor TA.Destroy; begin FreeAndNil(fA); FreeAndNil(fB); FreeAndNil(fC); inherited; end;
- вообще говоря потенциально содержит проблему.
Корректнее было бы конечно написать так:
destructor TA.Destroy; begin try FreeAndNil(fA); finally try FreeAndNil(fB); finally try FreeAndNil(fC); finally inherited; end; end; end; end;
Хотя конечно же - во всём надо знать меру.
Но! Если скажем внутри Free освобождается какой-нибудь ресурс - например закрывается файл или освобождается критическая секция, то может быть стоит подумать и о перфекционизме.
Один мой знакомый придумал другую технику - он складывает все ресурсы в "массив" (список etc) и освобождает в цикле, позволив выполнится каждой итерации. А вот Exception он поднимает на выходе.
В общем - поле для размышлений - тут есть.
Комментариев нет:
Отправить комментарий