我一直在使用 inline/RcppArmadillo 编写一些模拟代码,并偶然发现了 RNGScope 的问题。这是一个错误还是我在做一些非常愚蠢的事情?我已经清空了函数以使其可读(见下文)。
干杯,埃德
library(inline)
code_cpp <- '
using namespace arma;
// From R
uvec x0 = as<uvec>(x0_r);
vec time_vec = as<vec>(time_vec_r);
// Declare variables
umat simulation_data=zeros<umat>(x0.n_elem, time_vec.n_elem);
RNGScope scope;
return wrap(simulation_data);
'
gillespie_sim <- cxxfunction(body = code_cpp,
sig = signature(x0_r = "integer", time_vec_r= "numeric"),
plugin = "RcppArmadillo")
x0 <- c(1,0,0,0,0,0)
time_vec <- 1:800
set.seed(23)
for(i in 1:100000) out2 <- gillespie_sim(x0_r=x0,time_vec_r=time_vec)
我得到的错误
R(43305) malloc: * 对象 0x108c30a00 的错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改。*在 malloc_error_break 中设置断点以调试 Abort 陷阱:6