在RStudio中调用C会导致崩溃

时间:2016-01-06 22:18:30

标签: c r pointers realloc

在R中调用C函数时,我经常遇到致命错误,我怀疑这可能是因为我在gCRSF_gibbs函数中使用了“realloc”例程来变量n_k。有人可以告诉我,对n_k的内存重新分配是否正确?

gCRSF_gibbs <- function(z, n_k, sampleDex, r, a, p){
out <- .C("gCRSF_gibbs", z=as.double(z), n_k=as.double(n_k), 
          SampleDex=as.double(sampleDex), r=as.double(r), a=as.double(a),
          p=as.double(p), Ksize=as.integer(length(n_k)),
          WordNum=as.integer(length(sampleDex)))
out}

这就是它在R中的调用方式:

int x = 255;
mySerial->putChar(x);

1 个答案:

答案 0 :(得分:-1)

您使用realloc错误。它应该是:

*n_k = realloc(*n_k,sizeof(**n_k)*Ksize[0]);

您始终希望使用realloc之类的p = realloc(p, size)。否则,如果缓冲区被realloc移动,*n_k将指向释放的指针。