【发布时间】:2015-06-01 16:04:15
【问题描述】:
我正在为 C 代码使用 R 包装器。在小运行中,一切似乎都很好,但我在这个周末进行了更长的分析,我得到了我认为是内存泄漏的问题。我收到了消息:
Mac OS X 启动盘没有更多空间可用于应用程序内存,我不得不重新启动机器。
我假设我理解正确并且我有内存泄漏。了解 R 和 C 如何管理内存将帮助我了解内存泄漏在哪里。我的问题是:
当指针被发送回 R 时,在 C 运行期间分配的内存会发生什么情况?这些内存是由 R 垃圾收集器释放的,还是确保直接释放 C 中的所有内存非常重要?
编辑
在 R 中直接分配了一些内存空间并传递给 C。这些是之后返回给 R 的变量,我怀疑 R 垃圾收集器会正确管理这些内存。我怀疑可能导致内存泄漏的变量是临时变量,在 C 中使用 malloc 或 calloc 分配内存并且不会返回给 R。
【问题讨论】:
-
您的问题的答案取决于您如何分配内存,我怀疑您的问题的答案在Writing R Extensions, Section 5.9.2 - Allocating Storage 或Section 6.1 - Memory Allocation 中。
-
我还没有检查你的链接。我试图在编辑中解决您的评论。谢谢
标签: c r memory memory-leaks