Gil*_*lad 0 c++ memory-management
int newHeight = _height/2;
int newWidth = _width/2;
double*** imageData = new double**[newHeight];
for (int i = 0; i < newHeight; i++)
{
imageData[i] = new double*[newWidth];
for (int j = 0; j < newWidth; j++)
{
imageData[i][j] = new double[4];
}
}
Run Code Online (Sandbox Code Playgroud)
我动态分配了这个3D矩阵.什么是最快最安全的释放内存的方法?
这是我已经完成但是这需要几秒钟我的矩阵很大(1500,2000,4)
for (int i = 0; i != _height/2; i++)
{
for (int j = 0; j != _width/2; j++)
{
delete[] imageData[i][j];
}
delete[] imageData[i];
}
delete[] imageData;
Run Code Online (Sandbox Code Playgroud)
更新
如建议我选择了这个解决方案:
std::vector<std::vector<std::array<double,4>>>
Run Code Online (Sandbox Code Playgroud)
性能对我的情况很好
将整个图像数据分配为一个块,以便将其作为一个块释放,即.double* imageData = new double[width*height*4]; delete [] imageData;并使用偏移量对其进行索引.现在你正在进行300万次 单独的分配,这会分散你的堆.