![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамические массивы [D6, Win2k]
LongIsland © (2003-01-31 16:19:00)Существует ли какая-либо принципиальная разница между такими формами записи:
если
var
A: array of TSomeType;
то
A:=nil;
или же
SetLength(A, 0);
???
LongIsland (2003-01-31 17:47:00) [1]
> uw © (31.01.03 17:23)
А я все думаю, где я это видел?:-)
Соррррри, пятница - день тяжелый, тяжелее понедельника:-)
СПАСИБО!
uw (2003-01-31 17:23:00) [2]Topic Dynamic arrays
Dynamic-array variables are implicitly pointers and are managed by the same reference-counting technique used for long strings. To deallocate a dynamic array, assign nil to a variable that references the arrayor pass the variable to Finalize; either of these methods disposes of the array, provided there are no other references to it. Dynamic arrays of length 0 have the value nil. Do not apply the dereference operator (^) to a dynamic-array variable or pass it to the New or Dispose procedure.
LongIsland (2003-01-31 16:41:00) [3]:-)
> выделенный компилятором под массив будет потерян и освободится
> только при завершении программы
То есть плодимся и размножаемся:-)
Хорошо. А возможен ли случай, когда первый случай предпочтительнее?
Jel (2003-01-31 16:34:00) [4]Думаю да.
В первом случае указатель на кусок памяти, выделенный компилятором под массив будет потерян и освободится только при завершении программы.
Во втором случае будет изменен размер выделенного участка памяти, а освободившаяся память будет сразу возвращена системе.