Op 2021-01-09 om 20:12 schreef Yuriy Sydorov via fpc-pascal:
So, if I move Arr[3] to Arr[1], I first have to finilize/free Arr[1].
After that move the bytes in Arr[3] are exactly the same as in Arr[1]
(by definition of how move works) AFAIU.
Is that a problem with refcounts, because they would be the same also
but the number of copies increased?
System.Move just copies bytes in the memory. So all handling of
managed types must be done manually.
So if Arr[1] contains a managed value you need to finalize/free it
before Move.
After move Arr[1] and Arr[3] will contain the same value and if you
need to keep both you need to increase the refcount manually.
Or overwrite or finalize the old value with fillchar.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal