У меня вопрос о том, как выделяется память при я calloc
. Я рассмотрел этот вопрос, но не рассматривает, как выделяется память в случае динамически распределенного двумерного массива.
Мне было интересно узнать, существует ли разница в представлении памяти между тремя способами динамического выделения двумерного массива.
Тип 1:
double **array1;
int ii;
array1 = calloc(10, sizeof(double *));
for(ii = 0; ii < 10; ii++) {
array1[ii] = calloc(10, sizeof(double));
}
// Then access array elements like array1[ii][jj]
Тип 2:
double **array1;
int ii;
array1 = calloc(10 * 10, sizeof(double *));
// Then access array elements like array1[ii + 10*jj]
Тип 3:
double **array1;
int ii;
array1 = malloc(10 * 10, sizeof(double *));
// Then access array elements like array1[ii + 10*jj]
Из того, что я понимаю в calloc
и malloc
, разница между двумя последними состоит в том, что calloc
будет обнулять все элементы массива, тогда как malloc
не будет. Но являются ли первые два способа определения эквивалентного массива в памяти?