我在谷歌上搜索了这个问题,并查看了R扩展手册,但没有找到有关它的信息。
我有一个相当大的程序,它使用。C对C代码进行许多调用。我传入了相当多的数据,这些数据在程序的过程中不会改变。因此,我决定将它们强制为正确的数据类型,只有一次:
vec = as.integer(as.vector(vec)).
然后在。c调用中我写:
.C('function', vec = vec)
与
相对. c("函数",vec = as.integer (as.vector (vec)))。
这是在分析显示如下时完成的。占用了一点时间。然而,在这样做时(经过数十万次迭代),我得到malloc中的glibc错误:
* glibc检测到/usr/lib/r/bin/exec/r: malloc():内存损坏:0x0cabc0d8 **
我只是好奇为什么会发生这种情况,看到我在开始时强制的对象在程序的过程中没有改变,如果有一种方法可以绕过这个问题,这样我就可以最小化我的as。*电话。
谢谢,克里斯
您很可能只是在您的C函数中有一个错误,或者您试图释放作为参数的整数向量,这是您不应该做的。无论如何,这一定不能与预先转换向量有关。
如何为函数提供向量的长度?