重新分配一个三重指针

时间:2013-01-23 20:35:29

标签: c memory realloc calloc

嗨我有一个三重指针,我想在我的原始数组填满时重新分配。出于某种原因,我使用realloc的方式给了我一个seg错误。有人知道为什么?

double ***matrixn;
matrixn=(double***) calloc(1,sizeof(double **));
for(i=0;i<1;i++){
    matrixn[i]=(double**)calloc(3,sizeof(double*));
    for(j=0;j<3;j++){
        matrixn[i][j]=(double*)calloc(4,sizeof(double));
    }
}

max_size=1

下一部分发生在一个循环中:

max_size+=1;

matrixn=realloc(matrixn,max_size*sizeof(double**));
matrixn[max_size-1]=(double**)calloc(3,sizeof(double*));

for (i=0;i<3;i++){
matrixn[max_size-1]=(double*)calloc(4,sizeof(double));
}

由于

1 个答案:

答案 0 :(得分:2)

在第二个代码块的循环中,您忘记了索引i。它应该看起来像

matrixn[max_size-1][i]=(double*)calloc(4,sizeof(double));