[fpc-pascal] fpc has trouble with array types

Sven Barth pascaldragon at googlemail.com
Tue Oct 18 11:33:46 CEST 2011


Am 18.10.2011 11:19, schrieb Vincent Snijders:
> 2011/10/18 Sven Barth<pascaldragon at googlemail.com>:
>> Am 18.10.2011 11:12, schrieb Sven Barth:
>>>
>>> type
>>> TByteArray = array of Byte;
>>>
>>> function XlatPrime(): TByteArray;
>>> begin
>>> XlatPrime := TByteArray.Create(
>>> $64, $73, $66, $64, $3b, $6b, $66, $6f,
>>> $41, $2c, $2e, $69, $79, $65, $77, $72,
>>> $6b, $6c, $64, $4a, $4b, $44, $48, $53,
>>> $55, $42, $73, $67, $76, $63, $61, $36,
>>> $39, $38, $33, $34, $6e, $63, $78, $76,
>>> $39, $38, $37, $33, $32, $35, $34, $6b,
>>> $3b, $66, $67, $38, $37
>>> );
>>> end;
>>
>> Before I forget it: If you use this solution (not the const one) or you use
>> "SetLength", you need to free the array using "SetLength(0)" or
>> "YourArrayVariable := Nil", otherwise you'll have a memory leak. You must
>> not do this if you use the const solution.
>
> That is unexpected. Until now, SetLength was used for ansistrings and
> dynamic arrays, which didn't have this requirement (unless you messed
> with the internals using Move).

Could be that I missed the reference counting of arrays. At least I 
always try to "free" my arrays by hand ^^

Regards,
Sven




More information about the fpc-pascal mailing list