我发现了一种在 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/