C ++中的大双向量

时间:2015-09-22 15:51:14

标签: linux c++11 vector

我有矢量a(8000000000);
所以8000000000 * 8/1024/1024/1024 = 7.45Gb,所以我需要7.45Gb RAM才能使我的程序具有这么大的尺寸才能工作,而且我的计算机中有RAM,但它不起作用,为什么?

它编译,但是当我运行时,它会出错  在抛出'std :: bad_alloc'的实例后终止调用    what():std :: bad_alloc 中止(核心倾销)

提前致谢

1 个答案:

答案 0 :(得分:4)

要使程序正常工作,必须有两件事:

  • 操作系统必须是64位(这是你可能正在运行的,否则你将被限制在3GB RAM)
  • 您的程序必须构建为64位应用程序,以便它可以实际处理那么多内存

对于Windows MSVC解决方案/项目,请确保按照此https://msdn.microsoft.com/en-us/library/h2k70f3s.aspx文章中的步骤设置64位。

对于SunOS,请遵循以下文章:http://www.well.com/~jax/rcfb/solaris_tips/build_gcc_3.0_64bit.html

对于任何其他平台/编译器,您应该能够通过Google提取文档,当然