使用RInside析构函数
一个简单的实验表明,每个线程一次只允许一个RInside实例使用RInside析构函数,r,rcpp,rinside,R,Rcpp,Rinside,一个简单的实验表明,每个线程一次只允许一个RInside实例 #include <RInside.h> int main() { RInside R1; R1.parseEval("cat('Hello, R1\n')"); RInside R2; R2.parseEval("cat('Hello, R2\n')"); return 0; } 然而,另一个成功创建RInside实例的实验的结果并不十分清楚 #include <RInside.h>
#include <RInside.h>
int main() {
RInside R1;
R1.parseEval("cat('Hello, R1\n')");
RInside R2;
R2.parseEval("cat('Hello, R2\n')");
return 0;
}
然而,另一个成功创建RInside实例的实验的结果并不十分清楚
#include <RInside.h>
int main() {
RInside *R1 = new RInside();
R1->parseEval("cat('Hello, R1\n')");
delete R1;
RInside *R2 = new RInside();
R2->parseEval("cat('Hello, R2\n')");
delete R2;
return 0;
}
R1析构函数调用是否足以正确清理清洗液?请——这是刚刚在rcpp-devel邮件列表中讨论的所有内容。简而言之,它不是ReND析构函数,而是RAPI API本身,RIN本身只是通过更容易使用的C++包提供的。p>
在该线程中,Simon清楚地指出,由于R本身有许多静态全局变量,因此不太可能进行修复
#include <RInside.h>
int main() {
RInside *R1 = new RInside();
R1->parseEval("cat('Hello, R1\n')");
delete R1;
RInside *R2 = new RInside();
R2->parseEval("cat('Hello, R2\n')");
delete R2;
return 0;
}
Hello, R1
Lost warning messages