【发布时间】:2016-09-29 12:35:24
【问题描述】:
我发现了一种在 C 中分配矩阵的有趣方法,它允许使用 [i][j] 而无需初始化为 double matrix_a[nrows][ncols]。分配是
double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
但我找不到如何正确释放这种类型的分配。会不会像free(matrix_a) 这么简单?
【问题讨论】:
-
这个分配有什么独特之处?典型的分配+演员。
-
它的独特之处仅在于我以前从未见过它。我很快就用
double matrix_a[nrows][ncols]分配了内存,发现这种风格正在寻找更有效的方法。 -
你刚刚在堆上分配了内存。
double a[m][n]在堆栈上分配,堆栈比堆更受限制(通常)。这里没有什么特别的。 -
更好的是,使用
malloc( sizeof(double[nrows][ncols]) )。自我记录的代码是好的代码。