假设我有以下设置:
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 不必要的参数
已解决:正如一些人所建议的,我最终制作了一个指向我所有矩阵的指针,并在程序结束时释放了它们。
最佳答案
通常,您在函数的文档中告诉它它返回一个新的对象矩阵(即,它不会更改作为参数传递的任何矩阵)并且调用代码有责任在它返回时释放它不再使用。
另一种可能性是将这些新创建的矩阵的列表存储在某处,并在根据某些标准知道它们不再使用时处置或重新使用它们;例如通过使用标志、时间戳等。
关于c - 在 C 中释放返回的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133285/