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