我发现了一种在C中分配矩阵的有趣方法,它允许使用[i][j]
而不初始化为double matrix_a[nrows][ncols]
。分配是
double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
但是我无法找到如何正确地释放这种类型的分配。它会像free(matrix_a)
一样简单吗?
答案 0 :(得分:6)
这是正确的。您只能传递free
从malloc
和家人返回的内容。因此,由于您执行了一项malloc
,因此您只需free
。{/ p>
另外,there is no need to cast the return value of malloc:
double (*matrix_a)[ncols] = malloc(sizeof(double) * (nrows) * (ncols));