Thank you, Gabor and Martin. It helps a lot. Da
On Wed, Nov 12, 2014 at 1:20 PM, Martin Morgan <mtmor...@fredhutch.org> wrote: > On 11/12/2014 05:36 AM, Zheng Da 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? > > > register a finalizer that runs when there are no longer references to the R > object, see ?reg.finalizer or the interface to R and C finalizers in > Rinternals.h. If you return more than one reference to a key, then of course > you'll have to manage these in your own C++ code. > > Martin Morgan > > >> >> Thanks, >> Da >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > > -- > Computational Biology / Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N. > PO Box 19024 Seattle, WA 98109 > > Location: Arnold Building M1 B861 > Phone: (206) 667-2793 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel