Am 09.01.2021 um 18:23 schrieb Bart via fpc-pascal:
On Sat, Jan 9, 2021 at 5:12 PM Yuriy Sydorov via fpc-pascal
<fpc-pascal@lists.freepascal.org> wrote:

2. Is it OK if the elements of the array are (or contain) managed types?
You need to manually finalize/free elements which are overwritten before 
calling Move.
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?

If after the Move only one of the two references is reachable anymore (because e.g. some internal count variable "ends" the array before that element) then you don't need to care about increasing the reference count, cause there is only one reference after all (in that case you must *not* use an assignment to clear the value, but e.g. FillChar, cause the reference count must not be touched). Only if you'd really duplicate the element you'd need to take care of that.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to