c++ - 在函数中分配内存并返回它

标签 c++ memory-management

int** transpose(int** matrix,int row, int column)
{
    int** new_mat = new int*[column];


    for(int i = 0; i < column; i++)
    {
        new_mat[i] = new int[row];
    }
    for(int i  = 0; i < row; i++ )
    {
        for(int j = 0; j < column; j ++)
        {
            new_mat[j][i] = matrix[i][j];
        }
    }

    return new_mat;
}

我已经编写了这个函数,但感觉有些不对劲我无法决定是否应该删除 new_mat 以某种方式基本上函数返回这个值我应该如何在不使用任何智能指针或其他东西的情况下管理内存?

最佳答案

调用者将使用返回的矩阵。

此外,它可以获得所有权。因此,当不再需要该矩阵时,它可以将其删除。

另一个选项是为您提供另一个功能,即删除矩阵。然后,调用者必须调用该函数来取消分配动态分配的内存。


但是,智能指针是一个很好的 C++ 特性,我鼓励您尝试一下。

此外,由于这个 C++,您可以使用 std::vector<std::vector<int>>对于矩阵的类型。这样一来,您就不必担心内存管理,因为它的一切都会自动发生。

关于c++ - 在函数中分配内存并返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53628142/

相关文章:

macos - 如何在ElasticSearch上使用最多4GB的内存?

c++ - RCDATA 和用户定义的资源有什么区别?

第三方库和同名类的 C++ 命名空间问题

c++ - C、C++预处理器宏

iphone - Cocos2d 2.x、1.x 和 ARC

c# - 从 C# 中的存储缓存初始化构造函数

c++ - Qt 堆碎片 - QObjects 可以放在内存池中吗?

c++ - 将 std::vector<char> 的一部分转换为 std::array<char, n>, c++11

c++ - MFC 应用程序启动后立即崩溃

iphone - iOS 允许应用使用多少内存?