我用这种方式分配了一个4D数组
array_4d = calloc(dim1, sizeof(array_4d[0]));
for(i = 0; i < dim1; i++){
array_4d[i] = calloc(dim2, sizeof(array_4d[0][0]));
for(j = 0; j < dim2; j++){
array_4d[i][j] = calloc(dim3, sizeof(array_4d[0][0][0]));
for(k = 0; k < dim3; k++){
array_4d[i][j][k] = calloc(dim4, sizeof(array_4d[0][0][0][0]));
}
}
}
维度2和维度4将保持不变的大小,但维度1和维度3将需要随着时间的推移分配更多的空间.这不需要经常这样做,所以我计划将这些维度仅增加一个整数.
这是我目前拥有的代码,但我认为我甚至不是在正确的轨道上:
array_4d = (int ****)realloc(array_4d, new_dim1 * sizeof(int ***));
for (i = dim1; i < new_dim1; i++) {
array_4d[i] = (int ***)calloc(dim2, sizeof(int **));
for (j = 0; j < dim2; j++) {
if (i < new_dim1 || j < dim2) {
array_4d[i][j] = (int **)calloc(new_dim3, sizeof(int *));
for (k = 0; k < new_dim3; k++) {
if (i < new_dim1 || j < dim2 || k < new_dim3) {
array_4d[i][j][k] = (int *)calloc(dim4, sizeof(int));
}
}
}
}
}
因此,简而言之,我应该如何为DIM-1和DIM-3分配额外的一个空间块呢?(它们的大小相同)