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

Cag*_*Alp 5 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;
}
Run Code Online (Sandbox Code Playgroud)

我已经编写了这个函数但是感觉不对我无法决定是否应该删除new_mat,基本上函数返回这个值我应该如何处理内存而不使用任何智能指针或什么?

gsa*_*ras 1

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

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

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


然而,智能指针是一个很好的 C++ 功能,我鼓励您尝试一下。

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