本文介绍了R语言中由C函数分配的内存会发生什么情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 在我的R包中,实现该函数的C代码为使用分配了一些内存。 这个记忆会发生什么? 它会在R的GC的雷达下工作吗?还是会出现内存泄漏? 如果它在R的垃圾回收下,这个内存是否会被回收? 我在R的服务器进程中分配了巨大的5 GB数据作为服务器运行。 在这里,如果我可以从GC的雷达中分配这些内存是个好主意,就像我们在Java外部分配堆内存一样。 所以基本上,我可以在我的C代码中分配大量内存,而不会影响内存吗? 我打算使用malloc或calloc来分配内存。解决方案在Writing R Extensions中描述得相当清楚 - 一个使用访问同一个内存池的calloc() / malloc()。这样R可以 gc()这些东西,为什么你需要 PROTECT() annd UNPROTECT()。 In my R package , the C code which implements the function allocates some memory for usage.What happens to this memory ?Will it be under R's GC's radar or would it be a memory leak ?If its under R's garbage collection , will this memory be reclaimed back ?I have a huge 5 GB of data to be allocated in R's server process which is running as a server.Here it would be a good idea if i can allocate this memory out of GC's radar like we have outside heap memory allocation in Java.So basically , can i allocate a huge amount of memory in my C code without R not disturbing that memory ?I am planning to use malloc or calloc to allocate memory. 解决方案 This is described fairly clearly in "Writing R Extensions" -- one uses R variants of calloc() / malloc() that access the same pool of memory. That way R can gc() these things, and why you need PROTECT() annd UNPROTECT(). 这篇关于R语言中由C函数分配的内存会发生什么情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-29 06:29