gpt4 book ai didi

c - 如何重新分配一个空的二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:17 24 4
gpt4 key购买 nike

我有一个被多次调用的函数,其参数 n 定义了 n*2 大小的二维数组:

void myfunc(int n){

static int n0=0,i;
static double **x=NULL;

if(n>n0){ //realloc if n grows
x=(double **)realloc(x,n*sizeof(double*)));
for(i=0;i<n;i++){
x[i]=(double *)realloc(x[i],2*sizeof(double))); // <--problem here
}
n0=n;
}

}

在第一次调用时,**x 被初始化为 NULL,但 x[i] 不是,因此第二个 realloc 可能行为不正确。

有没有一种方法可以重新分配空二维矩阵的行,而无需先使用malloccalloc

最佳答案

在这里,您应该使用 malloc() 而不是 realloc(),因为您在这里不是重新分配内存。

但是如果您的代码无法知道数据是否是新的,则应首先将其初始化为 NULL 以便 realloc() 工作。

关于c - 如何重新分配一个空的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014310/

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