【发布时间】: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 是否完全自动完成所有内存释放,或者我是否[以某种方式滥用它。