【发布时间】:2014-11-25 19:36:01
【问题描述】:
假设我有以下设置:
struct matrix
{
int row, col;
};
struct matrix* createMatrix(int row, int col)
{
struct matrix* t_matrix;
t_matrix = (struct matrix*) malloc(sizeof(struct matrix));
t_matrix->row = row;
t_matrix->col = col;
return t_matrix;
}
然后我想要一个临时返回结构矩阵*,但不改变原始矩阵的函数(非常重要):
struct matrix* transpose(struct matrix* mat)
{
return createMatrix(mat->col, mat->row);
}
我现在如何释放这个转置矩阵,但仍暂时使用它的值?
编辑:删除了 createMatrix 的不必要参数
已解决:正如一些人建议的那样,我最终创建了一个指向我所有矩阵的指针,并在结束程序时释放它们。
【问题讨论】:
-
请注意,
createMatrix()不会使用struct matrix* -
在
transpose的返回值上使用free有什么问题吗? -
我的实际 createMatrix 函数与此不同,所以我有点困惑:P 我修复了它。
-
@RSahu 我会在哪里做呢?它返回后我无法释放它,如果我调用 transpose(matrix) 然后我尝试 free(transpose(matrix)) 它将释放一个不同的矩阵。
-
为什么会释放不同的矩阵?它会释放相同的内存...