Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Вниздобавление/удаление в/из TList Найти похожие ветки
← →
LDV (2012-02-15 14:47) [0]Нужен ли Dispose перед освобождением списка и правильно ли я сохраняю указаетли в список?
function Tform_YMLFields.CanExecuteService: Boolean;
var
FoundDuplicateName: Boolean;
CountryOfOriginYMLField, ManufacturerWarrantyYMLField, AdultYMLField: PArray;
I: Integer;
ListOfDuplicateFields: TList;
begin
ListOfDuplicateFields := TList.Create;
try
CountryOfOriginYMLField :=
CheckingCountryOfOriginYMLField(FoundDuplicateName);
if FoundDuplicateName then
begin
{ }
Assert(CountryOfOriginYMLField <> nil);
{ }
ListOfDuplicateFields.Add(CountryOfOriginYMLField); // <- ???
end;
ManufacturerWarrantyYMLField :=
CheckingManufacturerWarrantyYMLField(FoundDuplicateName);
if FoundDuplicateName then
begin
{ }
Assert(ManufacturerWarrantyYMLField <> nil);
{ }
ListOfDuplicateFields.Add(ManufacturerWarrantyYMLField); // <- ???
end;
AdultYMLField := CheckingAdultYMLField(FoundDuplicateName);
if FoundDuplicateName then
begin
{ }
Assert(AdultYMLField <> nil);
{ }
ListOfDuplicateFields.Add(AdultYMLField); // <- ???
end;
finally
for I := 0 to ListOfDuplicateFields.Count do
Dispose(PArray(ListOfDuplicateFields[I])); // <- ???
ListOfDuplicateFields.Free;
end;
Result := True;
end;
← →
begin...end © (2012-02-15 18:19) [1]> Нужен ли Dispose перед освобождением списка
Неизвестно. Какие указатели возвращают функции CheckXXXField? Если это ссылки на области памяти, динамически выделенные (процедурой New) внутри этих функций, значит, память освобождать нужно. Но в таком цикле:for I := 0 to ListOfDuplicateFields.Count - 1 do
Если же эти функции возвращают указатели на какие-то уже имеющиеся статические структуры, значит, освобождать не надо (потому что Вы ничего динамически и не выделяли).
> правильно ли я сохраняю указаетли в список?
Да.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.089 c