![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Освобождение памяти
Frozzen © (2004-11-24 18:31:00)Подскажите как правельно делать, имеется
TCoordPoint = class(TObject)
x, y :integer;
lat, long :real;
r :real;
....
end;
TPoints = object
p : array of TCoordPoint;
Count : Integer;
constructor Create(N : Integer);
destructor Destroy;
...
end;
constructor TPoints.Create(N : Integer);
begin
Count := N;
SetLength(p, N);
end;
destructor TPoints.Destroy;
var i: Integer;
begin
for i := 0 to Count-1 do
p[i].Destroy; // или не так
SetLength(p, 0);
end;
Bel (2004-11-25 11:19:00) [1]Ну тогда ничего криминального. Только добавить в конструкторе:
...
for i := 0 to N - 1 do
p[i] := TCoordPoint.Create;
А лучше воспользоваться > Digitman © (24.11.04 18:42) [1]
Frozzen (2004-11-25 10:17:00) [2]Все методы не писал сюда
Bel (2004-11-25 10:06:00) [3]И еще странность:
> TCoordPoint = class(TObject)
Может, лучшеrecordиспользовать.
А если всё-таки нуженclass, то тогда где конструкторы элементов массива.
begin...end (2004-11-25 09:12:00) [4]
> [4] Dimaxx © (24.11.04 22:08)
> Destroy и Free абсолютно идентичны по функциональности.
Но Free всё же безопасней, чем Destroy, за счёт предварительной проверки на NIL.
Странно другое:
> Frozzen (24.11.04 18:31)
> TPoints = object
ЮЮ (2004-11-25 03:47:00) [5]>Destroy и Free абсолютно идентичны по функциональности.
Однако ОСВОБОДИТЬ звучит более гуманно, чем УНИЧТОЖИТЬ :)
Dimaxx (2004-11-24 22:08:00) [6]Destroy и Free абсолютно идентичны по функциональности.
Frozzen (2004-11-24 19:10:00) [7]Вот и я про Free думал
Плохиш (2004-11-24 19:05:00) [8]
> Digitman © (24.11.04 18:42) [1]
> for i := 0 to Count-1 do
> p[i].Destroy; // это вдан.случае не вызывает сомнений
.Free
Digitman (2004-11-24 18:42:00) [9]for i := 0 to Count-1 do
p[i].Destroy; // это вдан.случае не вызывает сомнений
SetLength(p, 0); //а это. пожалуй, лишнее
непонятно только, почему для сей цели используется не слишком удобный дин.массив, а не специально разработанный для побобных целей класс TObjectlist ..