c++ - boost_multi 数组太大? bad_alloc 错误

标签 c++ memory-management boost bad-alloc boost-multi-array

我正在编写一个程序来测试一个功能。但是,当我声明具有特定大小的 boost::multi_array 时出现错误。我收到以下错误:

terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

我的代码是这样的:

#include <boost/multi_array.hpp>
#include <boost/array.hpp>
boost::multi_array<double,3> test ;
test.resize( boost::extents[1000][1000][1000] ) ;

如果我声明一个 2D multi_array 或者如果我声明一个大小为 10x10x10 和 100x100x100 的 3D multi_array,我不会收到错误。

有没有人知道如何解决这个问题?这个问题与编译器有关吗?

我使用 Qt creator 和 MinGW 编译器执行代码。

稍后在我的项目中,我将使用维度为 12/13 的数组,每个维度的长度在 100 到 1000 之间,所以我真的需要它来工作。

提前致谢!

最佳答案

RAM 内存超出。

double 占用 8 个字节 -> 1000x1000x1000 个 double = 8 GB 所需的 RAM。

关于c++ - boost_multi 数组太大? bad_alloc 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394276/

相关文章:

java - C++ 和 Java 中的类比/等价

c++ - 从用户提供的路径中删除前导 "../"

C++ 在什么时候使用堆而不是栈才有意义?

c - 为什么有些人在调用 malloc 后不检查 NULL?

c++ - CMake 与 Poky 交叉编译

c++ - boost 中的分位数函数 (C++)

opencv - 链接 Boost 静态库

java - Async Boost 写入 Java Socket - 传入字节数组有时部分为 0?

c++ - 从委托(delegate)中的 C++ 模型获取数据

opengl - glMapBuffer复制数据吗?