[R] S_alloc or Calloc for return value
David Winsemius
dwinsemius at comcast.net
Tue Jul 21 01:31:40 CEST 2009
On Jul 20, 2009, at 7:06 PM, Dan Kelley wrote:
>
> I am trying to write a C function to create a vector of integers
> that can be
> used by the R calling function. I do not know the size of the
> vector in the
> R calling function. (Well, actually, I have an upper limit on the
> size, but
> that is so large that R cannot allocate it. What I'm doing in the
> function
> is to do a sieving procedure, and the result will be small enough to
> fit
> into my machine's memory.)
>
> My reading of sections 6.1.1 and 6.1.2 of the guide on writing R
> extensions
> has left me a bit confused. Under R_alloc, I read "R will reclaim
> the
> memory at the end of the call" which seems to suggest the storage
> won't be
> made available afterwards, so that's not what I should use. As for
> the
> alterntaive, under Calloc, I read "This memory lasts until freed by
> the
> user", and it's clear that this is to be done within the C function in
> question.
>
> Summary question: how can I allocate memory withing a C function,
> making it
> available to an R function that calls the C function?
>
> Thanks. Dan.
> --
You might look at the package bigmemory to see how they attacked the
problem. In fact if my reading of their documentation is correct they
may have already done your work for you:
http://www.stat.yale.edu/~jay/bigmemory
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list