How do you deal with scoped allocations?
John Colvin
john.loughran.colvin at gmail.com
Mon Dec 9 01:13:19 PST 2013
On Sunday, 8 December 2013 at 19:00:29 UTC, Namespace wrote:
> > Just using new and GC.free would be fine, but there is
> really no
> > need to burden the GC with this at all; it's a textbook case
> for
> > C's malloc/free.
> The GC relies also on malloc / free.
Yes, it does. However, obviously it does a lot more than just
call malloc/free.
If you statically know the lifetime of a chunk of memory, then
there really is no point invoking all that extra heavyweight
code* when you can just DIY at no extra cost.**
*and adding to the collection burden (if triggered while the
memory is in scope)
**However, take care with unique pointers from inside the
allocated block to resources outside the block, as the GC might
not be able to find them later (see P.S.).
P.S. does anyone know how the GC interacts with core.stdc.free?
I.e. if you free a pointer, but don't null the pointer,
presumably the GC will still scan the memory despite it being
freed. Isn't this undefined behaviour?
More information about the Digitalmars-d
mailing list