There are three ways to deallocate the memory associates with a dynamic array, a
:
SetLength(a, 0);
Finalize(a);
a := nil;
It's up to you which one to use.
The documentation says the same, albeit in a slightly round about fashion:
To deallocate a dynamic array, assign nil to a variable that references the array or pass the variable to Finalize; either of these methods disposes of the array, provided there are no other references to it. Dynamic arrays are automatically released when their reference-count drops to zero. Dynamic arrays of length 0 have the value nil.
This will release all memory associated with the array, including any nested managed types, such as strings, dynamic arrys etc. that are owned by your record type.
If you need to resize the array for future use, and have the new data available, simply resize using SetLength
, and initialise the remaining elements appropriately.