On 12 February 2014 at 13:36, Alessandro Mammana wrote: | Ah wait, my bad (as always T.T), I found a much simpler explanation:
Isn't it lovely when persistence pays off? ;-) | colset <- sample(3e7-nr, 1e7) | storage.mode(colset) | [1] "integer" | storage.mode(colset-1) | [1] "double" | | So when I was unwrapping colset I allocated new memory in Rcpp to | convert from double to integer, which was no longer valid when I went | out of scope. Well that is sort-of a known issue. Look for discussions of clone() in the archive. | I think it is a bit dangerous that you never know if you are | allocating memory or just wrapping R objects when parsing arguments in | Rcpp. | Is there a way of ensuring that NOTHING gets copied when parsing | arguments? Can you throw an exception if the type you try to cast to | is not the one you expect? If you don't require an (implicit) cast and you don't use clone(), nothing gets copied. That;s how proxy objects around SEXP work. | You might imagine that with large datasets this is important. You can also use XPtr, and XPtr in combination with bigmemory's big.matrix, to keep data away from R. Dirk -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel