0

こんにちは、元の配列がいっぱいになったときに再割り当てしたいトリプルポインターがあります。何らかの理由で、私が realloc を使用している方法では、セグ フォールトが発生します。誰にも理由がありますか?

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));
}

ありがとう

4

1 に答える 1

2

2番目のコードブロックのループで、インデックスを忘れiました。代わりに次のようになります

matrixn[max_size-1][i]=(double*)calloc(4,sizeof(double));
于 2013-01-23T20:38:34.607 に答える