我有一个关于在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
and的理解malloc
,最后两者之间的区别在于calloc
它将数组的所有元素归零,而malloc
不会。但是在内存中定义数组的前两种方法是等效的吗?