0

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

在抛出 '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 之间,所以我真的需要它来工作。

提前致谢!

4

1 回答 1

1

超出 RAM 内存。

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

于 2016-02-14T17:04:09.443 回答