我发现了一种在 C 中分配矩阵的有趣方法,它允许使用 [i][j] 而无需初始化为 double matrix_a[nrows][ncols] 。分配是

double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));

但我找不到如何正确释放这种类型的分配。它会像 free(matrix_a) 一样简单吗?

最佳答案

那是正确的。您只能将 free 和 family 返回的内容传递给 malloc。所以既然你做了一个 malloc ,你就做了一个 free

另外, there is no need to cast the return value of malloc :

double (*matrix_a)[ncols] = malloc(sizeof(double) * (nrows) * (ncols));

关于c - C中自由特定类型的内存分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39770505/

10-13 08:18