Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux C+中的大双向量+;_Linux_C++11_Vector - Fatal编程技术网

Linux C+中的大双向量+;

Linux C+中的大双向量+;,linux,c++11,vector,Linux,C++11,Vector,我有向量a(80000000) 所以800000000*8/1024/1024/1024=7.45Gb,所以我需要7.45Gb的RAM,以便我的程序在这么大的尺寸下工作,我的计算机中有那个RAM,但它不工作,为什么 它可以编译,但当我运行时,它会出错 在抛出“std::bad_alloc”实例后调用terminate 什么():std::坏的 中止(堆芯转储) 提前感谢要使您的程序正常运行,必须做到以下两点: 操作系统必须是64位的(这可能是您正在运行的,否则您将被限制为3GB RAM) 您的

我有向量a(80000000)
所以800000000*8/1024/1024/1024=7.45Gb,所以我需要7.45Gb的RAM,以便我的程序在这么大的尺寸下工作,我的计算机中有那个RAM,但它不工作,为什么

它可以编译,但当我运行时,它会出错 在抛出“std::bad_alloc”实例后调用terminate 什么():std::坏的 中止(堆芯转储)


提前感谢

要使您的程序正常运行,必须做到以下两点:

  • 操作系统必须是64位的(这可能是您正在运行的,否则您将被限制为3GB RAM)
  • 您的程序必须构建为64位应用程序,这样它才能实际处理这么多内存
对于Windows MSVC解决方案/项目,请确保按照本文中的步骤设置64位

对于SunOS,请参阅本文:


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

您使用什么向量?有头顶吗?你需要连续内存吗?你能提供你用来分配向量的实际代码吗?它是哪种环境?窗户*尼克斯?哪个编译器(以便我们可以在需要时帮助您设置标志)假设您的车辆在停车场占据10个位置。有一个停车场,有15个免费停车位。但你还是不能停车!为什么?因为没有一个缺口足够大。计算机内存就是这样,我使用双向量,我只写向量a(800000000);然后我想知道它的意思,程序必须构建为64位应用程序,它必须是64位的。在64位平台上运行32位应用程序仍然将其内存访问限制为32位/指针(最多4GB),因此应用程序必须使用64位指针来寻址超出32位限制的内存