c - 在 C 中释放返回的变量

标签 c return malloc

假设我有以下设置:

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/

相关文章:

jquery - 如何在选择条件之前等待 JQUERY AJAX 响应

c - 如何在 C++ 中分配非常大的字段

c - Linux 上的用户空间串行通信库

c++ - Intel 64(EM64T)系统上char类型的大小

TypeScript:当类型推断正确检测到类型时显式设置类型是不好的做法吗?

Java: "Unexpected Type; required: Variable; found: value"通过尝试返回一个值

c++ - C/C++ 分配器在多线程上下文中的性能如何?

c - 如果 `malloc(0)` 返回一个非空指针,我可以将它传递给 `free` 吗?

java - 从 C 转换为 Java

c - 在 C 中加载 .mo 文件