![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с динамическим массивом
RDS © (2006-01-05 15:28:00)При использовании динамических массивов пишем :
SetLength(a,10);
a[0]:=x;
........
a[9]:=y;
.......
.......
.......
SetLength(a,5);
1) Что происходит с памятью, которую занимали элементы a[5]..a[9];
2) нужно ли каким-либо образом ее высвобождать;
3) нужно ли обнулять переменные a[5]..a[9] перед уменьшением длины массива.
Заранее спасибо.
TUser (2006-01-05 16:26:00) [1]Исключение - если за их уничтожение отвечает Owner или еще кто-то.
TUser (2006-01-05 16:20:00) [2]Если элементы массива - объекты, то им надо сказать Free.
begin...end (2006-01-05 16:05:00) [3]> umbra © (05.01.06 15:36) [2]
> 1) ничего, просто из а обратиться к ней уже нельзя.
Во-первых, с точки зрения менеджера памяти эта память становится свободной. Во-вторых, если тип элементов динамического массива требует финализации, то перед уменьшением длины массива лишние элементы финализируются. Например, если это массив строк, значения лишних элементов изменяются ещё до уменьшения массива. Поэтому вряд ли можно сказать, что с этой памятью ничего не происходит.
umbra (2006-01-05 15:36:00) [4]1) ничего, просто из
аобратиться к ней уже нельзя.
2) нет
3) нет
begin...end (2006-01-05 15:33:00) [5]1) она освобождается
2) нет
3) нет