在 C 中释放特定类型的内存分配
Free specific type of memory allocation in C
我发现了一种在 C 中分配矩阵的有趣方法,它允许使用 [i][j]
而无需初始化为 double matrix_a[nrows][ncols]
。分配是
double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
但我找不到如何正确释放这种类型的分配。它会像 free(matrix_a)
一样简单吗?
没错。您只能将 malloc
和家人返回的内容传递给 free
。所以既然你做了一个 malloc
,你就做了一个 free
.
此外,there is no need to cast the return value of malloc:
double (*matrix_a)[ncols] = malloc(sizeof(double) * (nrows) * (ncols));
我发现了一种在 C 中分配矩阵的有趣方法,它允许使用 [i][j]
而无需初始化为 double matrix_a[nrows][ncols]
。分配是
double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
但我找不到如何正确释放这种类型的分配。它会像 free(matrix_a)
一样简单吗?
没错。您只能将 malloc
和家人返回的内容传递给 free
。所以既然你做了一个 malloc
,你就做了一个 free
.
此外,there is no need to cast the return value of malloc:
double (*matrix_a)[ncols] = malloc(sizeof(double) * (nrows) * (ncols));