S_realloc:如何增加* numeric *向量的长度? (第一个参数不是char *)

时间:2015-05-17 00:01:46

标签: c r memory-management

在从R via .Call调用的C代码中,我将double *vector传递给函数 用数字填充vector。我不知道vector有多大 结束,所以我跟踪它的元素数量vector_size并使用 S_realloc(vector, vector_size+64, vector_size, vector_size * sizeof(double)) 在必要的情况下将尺寸增加64倍。 R CMD check抱怨 关于S_realloc的第一个元素是double *而不是char *。能够 我在这种情况下使用S_realloc?如何增加a的长度? 数字向量

1 个答案:

答案 0 :(得分:4)

这应该像添加演员一样简单

  foo = S_realloc((char*) p, n1, n2, n3);

其中p是您的double *p

还有一种替代形式

 TYPE* Calloc(size_t N, TYPE)
 TYPE* Realloc(ANY *P, size_t N, TYPE)
 void Free(ANY *P)

每<{3}}个编写R扩展程序

编辑:更正了初始评论,请参阅第6.1.2节。