[Rcpp-devel] freeing memory

Dirk Eddelbuettel edd at debian.org
Thu Mar 24 20:55:03 CET 2016

Hi there,

On 24 March 2016 at 21:37, rosterma at abo.fi wrote:
| I have used the example rinside_sample1.cpp as a basis for a short 
| routine to transmit data from C++ to R and to recover the results from R 
| to C++. On the face of it, everything works nicely both in our mainframe 
| (linux) computer at ÅAU and on the supercomputers at CSC IT Center of 
| Science (Helsinki). Before proceeding - not being an R expert myself - I 
| wanted to check the memory absorbance of the system. When checking the 
| program flow with Valgrind, the debugger signals that several blocks of 
| data are still reachable when exiting. This cannot be,
| since multiple calls to the routine would quickly absorb the CPU.

valgrind is a very powerful tool. But when you embed R, which is an
interpreted language with its own memory pool and management, you have to
expect a few differences.

Often, when I encounter such an example I try to first form a
baseline. Something like creating a C++ executable instantiating RInside, and
then 'doing nothing'.  Maybe Sys.sleep(5) or something like that.  Run it
under valgrid, not how is want /may be/ unreachable or not freed /when you
have not actually allocated anything/.

Then do the same, but create a matrix or vector with, say, 10e3, then 10e4,
then 10e5, ... elements and look at the output.

| So, how do I free memory for example when allocating it through commands
| such as:
|    Rcpp::NumericMatrix C_R=createMatrix(CATSM_INFO[0],cm,cn);
|    Rcpp::NumericVector v = R.parseEval(str);
|    string result(argv[1]);

The nice thing about C++ is that it has constructors and destructors so /a
priori/ you should not need to do anything.
| How should the example rinside_sample1.cpp be modified to get this 
| straight and to avoid the risk of excessive memory absorbance in 
| multiple calls?

Not to sound flippant, but we first need to really demonstrate that there
actually is a leak.

Hope this helps,  Dirk

http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org

More information about the Rcpp-devel mailing list