gpt4 book ai didi

r - 使用 RInside 析构函数

转载 作者:行者123 更新时间:2023-12-04 05:33:49 24 4
gpt4 key购买 nike

一个简单的实验表明,每个线程一次只允许一个 RInside 实例。

#include <RInside.h>

int main() {
RInside R1;
R1.parseEval("cat('Hello, R1\n')");
RInside R2;
R2.parseEval("cat('Hello, R2\n')");
return 0;
}

程序崩溃,输出如下:
Hello, R1
terminate called after throwing an instance of 'std::runtime_error'
what(): can only have one RInside instance

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

然而,另一个连续创建 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;
}

这个程序会在 R2 创建的那一刻发出嗡嗡声。之前的输出如下所示:
Hello, R1
Lost warning messages

R1 析构函数调用是否足以进行适当的 RInside 清理?

最佳答案

-- 这都是刚刚在 rcpp-devel 邮件列表中讨论过的 and here is a link to the entire (short) thread .简而言之,它不是 RInside 析构函数,而是 R API 本身,RInside 仅通过更易于使用的 C++ 包装提供。

A follow-up post has been sent to r-devel as well并且在该线程中,Simon 明确指出,由于 R 本身中有许多静态全局变量,不太可能修复。

关于r - 使用 RInside 析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12244798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com