[Rd] Recycling memory with a small free list
radford at cs.toronto.edu
Thu Feb 19 03:16:19 CET 2015
> > there's a danger of getting carried away and essentially rewriting
> > malloc. To avoid this, one might try just calling "free" on the
> > no-longer-needed object, letting "malloc" then figure out when it can
> > be re-used.
> Yes, I think that's what I was anticipating: add a free() equivalent...
> > Unfortunately, that seems not to be safe, because it's
> > possible that there is a reference to the no-longer-needed object on
> > the PROTECT stack, even though no one should actually be looking at
> > it any more.
> Can you explain this case? I don't think I understand it.
My comment about it not being safe was referring to actually calling
the "free" function in the standard C library, not a "free equivalent".
Except for small objects, R calls "free" when it concludes that it no
longer needs an object, having allocated space for it earlier with
"malloc". After "free" is called, R had better not do anything like try
to mark it in the garbage collection phase...
Keeping a free list apart from the one maintained by malloc/free would
I think have to be how it is done, hence my comment about ending up
rewriting malloc/free. But it may not be too hard to restrain oneself
and only do the simplest things.
More information about the R-devel