[Rcpp-devel] Best way to return raw array

Darren Cook darren at dcook.org
Fri Sep 2 03:16:49 CEST 2011

I've extended Christian Gunning's speed test with an STL and C/C++
version; I was about to post but then I got a bit stuck with using
Rcpp::wrap() for a raw block of memory. I'm using this:

int nn=as<int>(n);
double *p=new double[nn];
NumericVector ret(p,p+nn);
delete p;
return ret;

mysample_cpp<-cxxfunction( signature(n="numeric"), src1cpp, plugin='Rcpp')

At first I wasn't using "delete p", and it worked fine, but the memory
leak bothered me. Now I've added the delete it (irregularly) gives bad
results. E.g.
 [1]  1.00000e+01  1.00000e+01  1.00000e+01  1.00000e+01  1.00000e+01
1.00000e+01 6.74011e+199  1.00000e+01  1.00000e+01  1.00000e+01

 Q1: Was there no memory leak? I.e. R has taken control of my memory
block and will delete it for me?

 Q2: Is this the best way to do it (with maximum speed, but no memory
leaks, in mind)?


Darren Cook, Software Researcher/Developer

http://dcook.org/work/ (About me and my work)
http://dcook.org/blogs.html (My blogs and articles)

More information about the Rcpp-devel mailing list