[fpc-devel] Manual memory management with ansistrings and dynamic arrays
jonas.maebe at elis.ugent.be
Thu Dec 12 16:43:42 CET 2013
On 12 Dec 2013, at 16:39, Adriaan van Os wrote:
> Jonas Maebe wrote:
>>> In theory, you should call "initialize" for every record/array
>>> containing management types in your allocated block to be safe.
>> And in practice, you also have to call "finalize" again for every
>> record/array containing managed types (and for every separate
>> managed type too, I forgot to mention this earlier although I hope
>> that was implicitly clear) in that allocated block before freeing
>> it again (to prevent memory leaks).
> Thanks for your reply. I feel comfortable calling "initialize" and
> "finalize" for every managed type in the memory block that I
> allocate/deallocate manually. However, can you elaborate why
> "initialize" and "finalize" must be called for the containing record/
> array too ? If my understanding of your reply is correct ?
If you call it for an array/record containing managed types, then then
compiler/rtl will initialise all managed fields/elements within that
array/record. Calling it for individual elements is only required if
they're not contained in a record/array.
More information about the fpc-devel