[Rd] How to maintain memory in R extension

Gábor Csárdi csardi.gabor at gmail.com
Wed Nov 12 15:36:33 CET 2014


Hi,

I think you need external pointers:
http://cran.r-project.org/doc/manuals/r-release/R-exts.html#External-pointers-and-weak-references
The docs also has an example.

See more examples from other R packages here:
https://github.com/search?q=R_MakeExternalPtr+user%3Acran&type=Code&utf8=%E2%9C%93

Gabor

On Wed, Nov 12, 2014 at 8:36 AM, Zheng Da <zhengda1936 at gmail.com> wrote:
> Hello,
>
> I wrote a system to perform data analysis in C++. Now I am integrating
> it to R. I need to allocate memory for my own C++ data structures,
> which can't be represented by any R data structures. I create a global
> hashtable to keep a reference to the C++ data structures. Whenever I
> allocate one, I register it in the hashtable and return its key to the
> R code. So later on, the R code can access the C++ data structures
> with their keys.
>
> The problem is how to perform garbage collection on the C++ data
> structures. Once an R object that contains the key is garbage
> collected, the R code can no longer access the corresponding C++ data
> structure, so I need to deallocate it. Is there any way that the C++
> code can get notification when an R object gets garbage collected? If
> not, what is the usual way to manage memory in R extensions?
>
> Thanks,
> Da
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list