出于各种原因,我必须将一个矩阵作为缓冲区传递给函数,但是之后,我想将该矩阵(作为一个连续的内存块分配)转换为对每一行进行单独分配的矩阵。 这是我目前正在使用的功能。
T** makeRowAllocations(T** matrix, unsigned height, unsigned width) {
T** a = new T*[height];
for (size_t i = 0; i < height; ++i) {
a[i] = new T[width];
for (size_t j = 0; j < width; ++j)
{
a[i][j] = matrix[i][j];
}
}
delete[] matrix[0];
delete[] matrix;
return a;
}
我想知道是否有一种更有效的内存处理方式(在内存中同时不保留2个矩阵)。有没有办法从第一个矩阵逐渐释放内存?