在 C++ 中,我正在读取几个大型网格化数据集进行处理。最近,这些数据集之一在我开始处理之前就破坏了我的代码。
数据集有 5765 列和 5872 行,总共 33852080 个单元格。那么在单个 vector 容量限制下为两倍,对吗?或不?我目前正在尝试解决这个问题。
试图将内部第 2496 个 vector push_back 到原始 vector 中时抛出异常。
代码如下:
slopeGrid.reserve(rows);
flowDirGrid.reserve(rows);
flowAccumGrid.reserve(rows);
tempGrid.reserve(rows);
inflowGrid.reserve(rows);
TWIgrid.reserve(rows);
for(int k=0; k<rows; k++)
{
elevation.push_back(*new vector<double>(cols));
ATB.push_back(*new vector<double>(cols));
Area.push_back(*new vector<double>(cols));
slopeGrid.push_back(*new vector<double>(cols));
flowDirGrid.push_back(*new vector<double>(cols));
flowAccumGrid.push_back(*new vector<double>(cols));
tempGrid.push_back(*new vector<double>(cols));
inflowGrid.push_back(*new vector<double>(cols));
TWIgrid.push_back(*new vector<double>(cols));
}
最佳答案
所以你有 3400 万个对象,对吗?如果这些对象足够大,我认为每个 Windows 32 位进程达到最大 2 gig 不会那么难...
关于c++ - vector 存储限制的 vector - 出现 "Microsoft C++ exception: std::bad_alloc at memory location 0x0031650C."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32018208/