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/