[fpc-pascal] Dynamic arrays, yet another pitfall
Jürgen Hestermann
juergen.hestermann at gmx.de
Sun Feb 9 18:41:49 CET 2014
Am 2014-02-09 17:47, schrieb Sven Barth:
> On 09.02.2014 16:34, Flávio Etrusco wrote:
>>
>> In other words: dynamic arrays are like AnsiStrings without the
>> copy-on-write semantics. I'd certainly wish Borland copied the COW
>> semantics :-/
>
> Dynamic arrays have full COW semantics.
Now I am fully confused.
It's hard to find out how things work in Free Pascal given the poor documentation.
This sentence from http://www.freepascal.org/docs-html/ref/refsu18.html is *very* misleading:
"Dynamic arrays are reference counted: assignment of one dynamic array-type variable to another will let both variables point to the same array. Contrary to ansistrings, an assignment to an element of one array will be reflected in the other: there is no copy-on-write."
Reference counted? Point to the same array? No copy-on-write?
It seems you cannot believe anything from the documentation.
You must question every statement.
*Everything* can only be determined by writing test programs.
I now found a similar posting 5 years ago regarding the same issue:
http://lists.freepascal.org/lists/fpc-pascal/2009-February/020198.html
Why ist this not part of the documentation?
So it seems there is a copy-on-write *but* only when using SetLength.
What a very consistent design!
More information about the fpc-pascal
mailing list