2012-05-18 2 views
1

Например, если у меня есть следующие:Каков наилучший/предпочтительный метод для освобождения динамического массива вариантов?

type 
    TVArray = array of array of Variant; 
var 
    MyArray : TVArray; 

Затем добавить кучу элементов MyArray так, чтобы она 1000 массивы 30 вариантов каждого.

Каков наилучший или предпочтительный способ освободить эту память, если я хочу сделать это сразу?

MyArray := nil; 

или

SetLength(MyArray, 0); 

или

Finalize(MyArray); 

или мне нужно сделать что-то к югу от массивов первых? Имеет ли значение то, что содержат отдельные варианты?

ответ

8

Все три эквивалентны. Вы выбираете вопрос стиля. Я предпочитаю первый (назначая nil), потому что он настолько краток.

Компилятор знает, как освободить значения Variant. Вам нечего делать, прежде чем вы отпустите массив - если вы хотите освободить массив вообще, учитывая, что компилятор в любом случае уничтожит его для вас.

+0

Спасибо, именно то, что мне нужно было знать. –

+0

Если я могу задать еще один вопрос, предпочитаете ли вы любой из этих трех, если вы хотите отправить порт на FreePascal? –

+0

Free Pascal работает так же. –

4

Варианты управляемых типов. Это означает, что компилятор позаботится об утилизации любых ресурсов, связанных с вариантом, когда он выходит за рамки. Рассматривайте время жизни вариантов так же, как и для строк, динамических массивов, интерфейсов и т. Д.

Это означает, что все три варианта идентичны по смыслу и правильно располагают массив и его содержимое. Вы можете использовать тот, который вы предпочитаете.

+0

Ваш ответ и Роб почти идентичны, поэтому я дал чек Робу с момента его первого. Однако, спасибо. –

+0

@ Джерри Это хорошо! Я только добавил мой, потому что оригинальная версия Роба не говорила об утилизации вариантов, т. Е. Первый абзац моего ответа. Но затем он освещает это в редактировании. –

Смежные вопросы