On Wed, 24 May 2023 02:08:25 +0200 <pikappa.de...@gmail.com> wrote: > initialize = function() { > > .C("make_native_obj", self$native_obj) > > })
> extern "C" void make_native_obj(double *obj) { > > auto native_obj = new NativeObjStruct(); > > memcpy(obj, &native_obj, sizeof(obj)); > > } > Is there a better way to do this? The .Call() interface (where functions take an arbitrary number of native R objects and return a native R object) combined with external pointers is likely to be a better approach here: https://cran.r-project.org/doc/manuals/R-exts.html#External-pointers-and-weak-references On the R side, the returned SEXP will have class 'externalptr', with not much to do about it programmatically. C code can additionally register a finalizer on the object in order to release the memory automatically after the it is discarded. -- Best regards, Ivan ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel