On Mon, 17 Feb 2014, Lukasz Sokol wrote:
On 17/02/14 06:02, Jürgen Hestermann wrote:
Am 2014-02-16 17:16, schrieb Michael Van Canneyt:
It does exactly that, it says:
1) No COW
As said already: SetLength *is* a write!
I'm not of compiler background - but I think you're confusing things here.
To 'write' usually means : changing DATA element(s). That's it. You have a
sheet of paper of
known size and you write on it/erase/change the text. But the size of the array
remains the same.
SetLength is /not/ a write in this sense : because you're resizing the paper
you're
going to write on (e.g. adding another page or cutting it to size)
As far I understood, SetLength is changing the /description/ of the array
(meta-data?) but not the data itself :
in this sense, it is not a 'write data' operation.
It does 'write' as in: change parameters - of the array DESCRIPTION area, but
that area is not ARRAY DATA;
and enlarging/shrinking the memory allocation - but that does not change the
content of the already
written-to array elements: it may add some blank ones or remove some written-to
ones, but the rest
remains UNCHANGED, i.e. they (the just-added or remaining-after-removal ones)
are not being written-to
by doing SetLength.)
That is the long version of what I was trying to say. Thank you :)
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal