gpt4 book ai didi

c - 在 C 中重新分配数组

转载 作者:行者123 更新时间:2023-12-03 03:00:28 24 4
gpt4 key购买 nike

我正在尝试创建一个将两个 vector 附加在一起的函数,但在尝试为第一个 vector 重新分配更多内存以便第二个 vector 适合时,我最终遇到了段错误。这是代码

void vectorAppend(double** v1, size_t* s1, double const* v2, size_t s2){
assert(v1 && v2 && *s1 > 0 && s2 > 0);
(*v1) = realloc((*v1), (*s1 + s2)*sizeof(double));
for (size_t i = 0; i < s2; i++){
*v1[*s1+i]=v2[i];
}
*s1+=s2;
}

这就是我从 main 中调用它的方式

double *v1 = vectorConstruct(3, 2);
double *v2 = vectorConstruct(3, 0);
unsigned int s = 3;
vectorAppend(&v1, &s, v2, 3);

vectorConstruct 返回一个指向 vector 的指针,该 vector 被初始化为第二个参数。

double* vectorConstruct(size_t s, double val){
assert(s>0);
double *ret = malloc(s*sizeof(double));
for(size_t i = 0; i < s;i++){
ret[i]=val;
}
return ret;
}

我似乎在这里找不到问题,所以任何答案都会受到赞赏。

最佳答案

*v1[*s1+i]=v2[i];

应该是

(*v1)[*s1+i]=v2[i];

一元* 的优先级低得惊人。

关于c - 在 C 中重新分配数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com