> On Jun 4, 2018, at 4:39 PM, Michael Van Canneyt <mich...@freepascal.org> 
> wrote:
> 
> I fail to see why you need management operators for this.

just because I wanted the array implementation available and to get automatic 
cleanup. I don’t know all the stuff dynamic arrays do behind the scenes and 
that worries me (see below).

> 
> If you declare your array in the record as a dynamic array, everything
> will be done for you.
> 
> The array is private. This means that the reference count will be 0 or 1.
> When the record goes out of scope, the compiler code will free it.
> 
> Unless I missed something which is always a possibility.

The ref counting is basically useless right now because the record needs to be 
passed by reference. All the internals like the ref count need to be stored as 
a pointer I think but I wanted this to be bare-bones and fast. Anyways it’s 
really just for single functions or globals, otherwise I’d use a class.

Mainly I just thought it was cool FPC can finally do this and if you wanted to 
you could make a robust implementation that did real ref counting. I had the 
problem with thread locking code getting called and killing performance so I 
won’t use dynamic arrays anymore because I don’t trust them. Using management 
operators with manual memory allocation gives you access to the implementation 
also in case you need to change something or need performance tuning (distrust 
of dynamic arrays really drives this idea for me). If I want to change 
something about dynamic arrays implementation it’s probably impossible for me 
personally to figure it out.

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to