Message-ID: <20110609144233.GA5957@siouxsie>
Date: 2011-06-09T14:42:33Z
From: oliver
Subject: Ctrl-C of functions that allocated mem
In-Reply-To: <FF0548F3-A51E-426E-8D18-367E34FD61E2@r-project.org>
On Wed, Jun 08, 2011 at 08:40:21PM -0400, Simon Urbanek wrote:
>
> On Jun 8, 2011, at 8:06 PM, oliver wrote:
>
> >
> > Hello,
> >
> >
> > what happens, when a function (R-extension in C), that allocated memory
> > (strdup(), malloc()/calloc() and so on), and is used in interactive mode, then
> > will be stopped via Ctrl-C?
> >
> > I would assume that there remains allocated memory,
> > which is not usable and also not accessable (hence no
> > way to free it).
> >
> > Are there any mechanisms in R that could help in rolling
> > back the allocation?
> >
>
> Yes, if you read R-exts:
> http://r.research.att.com/man/R-exts.html#Memory-allocation
> you would know that you're not supposed to use malloc/calloc at all and if
> you allow interruption ("regular" C code does not) R_alloc does what you asked
> about.
[...]
In the printed (pdf) version of R-exts I found that
R_alloc() and S_alloc() and some other functions
from section 6.1.1 have return type char*.
This seesm to be a relict from the K&R era,
because since ANSI C void* is the type for generic pointers.
will it be changed in the future, so that
R_alloc() will be void* R_alloc() one day?
Ciao,
Oliver