Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
S_realloc:如何增加*数值*向量的长度?(第一个参数不是char*)_C_R_Memory Management - Fatal编程技术网

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

S_realloc:如何增加*数值*向量的长度?(第一个参数不是char*),c,r,memory-management,C,R,Memory Management,在通过.Call从R调用的C代码中,我将一个double*vector传递给 用数字填充向量。我不知道向量会有多大 结束,所以我跟踪它的元素数vector\u size并使用 S_realloc(向量,向量大小+64,向量大小,向量大小*sizeof(双)) 必要时将大小增加64倍R CMD检查投诉 关于S\u realloc的第一个元素是double*而不是char*。可以 我在这种情况下使用了S\u realloc?一个人如何增加一根绳子的长度 数值向量?应该像添加强制转换一样简单 fo

在通过.Call从R调用的C代码中,我将一个
double*vector
传递给 用数字填充向量。我不知道向量会有多大 结束,所以我跟踪它的元素数
vector\u size
并使用
S_realloc(向量,向量大小+64,向量大小,向量大小*sizeof(双))
必要时将大小增加64倍<代码>R CMD检查投诉 关于
S\u realloc
的第一个元素是
double*
而不是
char*
。可以 我在这种情况下使用了
S\u 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)
每写一个扩展名


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

你好,德克,谢谢你的帮助。最初有两个警告,现在只剩下一个警告:
警告:从'char*'[-Wincompatible pointer types]vector=S_realloc((char*)分配给'double*'的指针类型不兼容vector,
。接下来我将研究
Realloc
。你可能也需要作业的演员阵容。这是标准的C语言,你喜欢这个API…嗨,已经使用了
vector=(双*)Realloc(vector,vector\u newsize,双)
。谢谢,德克!