在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);
答案 0 :(得分:-1)
您使用realloc
错误。它应该是:
*n_k = realloc(*n_k,sizeof(**n_k)*Ksize[0]);
您始终希望使用realloc
之类的p = realloc(p, size)
。否则,如果缓冲区被realloc
移动,*n_k
将指向释放的指针。