[fpc-pascal] Dynamic arrays, yet another pitfall

Michael Van Canneyt michael at freepascal.org
Sun Feb 16 13:20:02 CET 2014



On Sun, 16 Feb 2014, Jürgen Hestermann wrote:

>
> Am 2014-02-15 19:41, schrieb Michael Van Canneyt:
>> That setlength behaves rather freakish for dynamic arrays, does not mean we 
>> have copy-on-write.
>
> Well, setlength *is* a write.
> What else is it?
> Doesn't it write to the array?

Depends on how you define 'write to the array'.

"Writing to the array" = "Changing the value of one of the elements in the array."

In this sense, setlength does not write to the array, which would mean changing the value of
one or more of the elements in the array. It does not do that. It resizes the array and
the result is by definition a different array.

But taking the above definition, with "element" = "character", you see that ansistrings do 
have copy-on-write.

It's largely a question of semantics, I suppose.

Michael.


More information about the fpc-pascal mailing list