Hairy Pixels via fpc-pascal schrieb am
Mo., 18. März 2024, 13:30:
>
>
> > On Mar 18, 2024, at 5:29 PM, Michael Van Canneyt via fpc-pascal <
> fpc-pascal@lists.freepascal.org> wrote:
> >
> > Of course there must be, that's the whole point of copy-on-write.
> >
> > As soon as one reference is
On 2024-03-18 13:29, Hairy Pixels via fpc-pascal wrote:
On Mar 18, 2024, at 5:29 PM, Michael Van Canneyt via fpc-pascal
wrote:
Of course there must be, that's the whole point of copy-on-write.
As soon as one reference is changed, a copy is made if the reference
count
is larget than 1, and
> On Mar 18, 2024, at 5:29 PM, Michael Van Canneyt via fpc-pascal
> wrote:
>
> Of course there must be, that's the whole point of copy-on-write.
>
> As soon as one reference is changed, a copy is made if the reference count
> is larget than 1, and this copy is changed.
Oh, it does copy on
On Mon, 18 Mar 2024, Hairy Pixels via fpc-pascal wrote:
On Mar 18, 2024, at 3:27 PM, Hairy Pixels wrote:
Oh, it's a pointer to a pointer? I guess that explains how it can resize itself
and not invalidate shared references, if those are even possible with
AnsiString.
Wait, that's
Op 18-3-2024 om 09:27 schreef Hairy Pixels via fpc-pascal:
do that, you'll have the same output 3 times.
Oh, it's a pointer to a pointer?
No, it is a pointer variable, but you take the address (@) of that
pointer, which causes the second indirection
> On Mar 18, 2024, at 3:27 PM, Hairy Pixels wrote:
>
> Oh, it's a pointer to a pointer? I guess that explains how it can resize
> itself and not invalidate shared references, if those are even possible with
> AnsiString.
Wait, that's totally wrong. :) @s is the address of the local variable
> On Mar 18, 2024, at 1:52 PM, Michael Van Canneyt via fpc-pascal
> wrote:
>
> An ansistring is a pointer to a memory block.
>
> You are printing the address of S1 and the address of S, i.e. the address of
> the pointer itself, not the address of what S (or s1) points to. Obviously
> the
On Mon, 18 Mar 2024, Hairy Pixels via fpc-pascal wrote:
Curious, why did the address of "s" change here? Shouldn't the AnsiString be
incrementing a reference count and not actually changing the actual pointer or copying?
Correct me if I'm wrong, AnsiString is ref counted when passing
Curious, why did the address of "s" change here? Shouldn't the AnsiString be
incrementing a reference count and not actually changing the actual pointer or
copying?
Correct me if I'm wrong, AnsiString is ref counted when passing in/out
functions but copies on assignment so technically no two