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

S_realloc: How to increase the length of a *numeric* vector? (first argument not char*)

在通过 .Call 从 R 调用的 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 吗?如何增加一个的长度 数值向量?

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

  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)

Section 6.1.2 User-controlled Memory 编写 R 扩展

编辑: 更正第 6.1.2 节的初始评论。