* On 2009-09-04 at 22:54 +0200 Yurii Aulchenko wrote: > We are at an early stage of designing an R library, which is effectively an > interface to a C++ library providing fast access to large matrices stored > on HDD as binary files. The core of the C++ library is relatively > sophisticated class, which we try to "mirror" using an S4 class in R. > Basically when a new object of that class is initiated, the C++ constructor > is called and essential elements of the new object are reflected as slots > of the R object.
Have a look at external pointers as described in the Writing R Extensions Manual. > Now as you can imagine the problem is that if the R object is removed using > say "rm" command, and not our specifically designed one, the C++ object > still hangs around in RAM until R session is terminated. This is not nice, > and also may be a problem, as the C++ object may allocate large part of > RAM. We can of cause replace generic "rm" and "delete" functions, but this > is definitely not a nice solution. You likely want a less literal translation of your C++ object into R's S4 system. One slot should be an external pointer which will give you the ability to define a finalizer to clean up when the R level object gets gc'd. + seth -- Seth Falcon | @sfalcon | http://userprimary.net/user ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel