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

标签 c++ vector

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

相关文章:

c++ - ReadDirectoryChangesW 拒绝 CreateIoCompletionPort 接受的 HANDLE

c++ - 将 shared_ptr 或 unique_ptr 传递给 _beginthreadex

c++ - 将 std::condition_variable 与 std::timed_mutex 一起使用

c++ - 段错误错误 C++

c++ - 当 C++ 尝试访问 vector 的元素(在范围内)时,Qt Quick Windows 应用程序崩溃

c++ - 将 std vector 重新分配给默认构造函数 vector 是删除的好方法吗?

c++ - C 中的数据类型问题

c++ - SDL 结构对象 - 在调用销毁函数后设置为 nullptr?

c++ - 大多维 vector 初始化C++

c++ - 如何折叠STL vector 的子 vector ?