gpt4 book ai didi

c++ - vector 存储限制的 vector - 出现 "Microsoft C++ exception: std::bad_alloc at memory location 0x0031650C."错误

转载 作者:行者123 更新时间:2023-11-28 06:07:50 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com