【问题标题】:RStudio crashes *after* calling an Rcpp function multiple timesRStudio 在多次调用 Rcpp 函数后崩溃
【发布时间】:2015-11-17 23:05:39
【问题描述】:

我编写了一些 Rcpp 代码来查找两条分段线性曲线的交点。我以需要嵌套循环(检查所有段对)的幼稚方式解决了这些问题,因此为了速度而使用 Rcpp。 (问题在此处的“示例1”中进行了图示描述:https://prezi.com/rwkji_leuwdr/r-and-c-integration/

代码使用 sourceCpp 编译良好,甚至运行良好并给出预期结果。但是,奇怪的问题是,它在运行 RStudio 多次(例如 5 或 6 次)或运行一段时间后总是崩溃。我还没有看到其他人在 google/stack 溢出搜索中记录此类问题。我是 C++ 新手,对问题出在哪里没有任何直觉;考虑到这些功能一开始是按需要运行的,对我来说这似乎是一种很奇怪的行为。

代码和数据在这里:https://github.com/suztolwinskiward/ReproducepRoblem

提前感谢任何提供帮助的人!

【问题讨论】:

  • 编译代码的经验和调试所花费的时间告诉我们,这不太可能与 RStudio 有任何关系,只是发生在你的 shell 上。你有一个错误,你需要找到它。很抱歉在这里带来坏消息,但严格来说没有糖衣。
  • 呃,找到了。令人尴尬,但感谢您巩固了我对 RStudio 的信任。
  • 干得好!调试器有时可以提供帮助,但它们也有学习曲线。
  • @SuzTolwinski-Ward 我遇到了类似的问题,请分享一下这个错误是什么?
  • @MatthewPlourde。以为我早在很久以前就解决了这个问题,但最近连续多次调用代码的一个版本,发现它在调用 100s/1000s 后仍然随机崩溃。闻起来像内存泄漏,所以我更改了函数以返回 void 并通过引用传递了我需要的所有内容,因此我的解决方案的 Rcpp 部分只是修改了 R 中定义的输入变量。消除 C++ 代码中的内存分配消除了崩溃。所以仍然不确定 Rcpp 是否完全自动完成所有内存释放,或者我是否[以某种方式滥用它。

标签: rstudio rcpp


【解决方案1】:

FWIW,我遇到了同样的问题,错误似乎是我试图将太多数据分配给向量。在 Rcpp 中使用 () 运算符而不是 [] 运算符可能会有所帮助。使用[],我的代码在运行几次后会编译并崩溃;使用(),代码会编译,但会在运行时抛出错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多