Linux C+中的大双向量+;
我有向量a(80000000)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) 您的
所以800000000*8/1024/1024/1024=7.45Gb,所以我需要7.45Gb的RAM,以便我的程序在这么大的尺寸下工作,我的计算机中有那个RAM,但它不工作,为什么 它可以编译,但当我运行时,它会出错 在抛出“std::bad_alloc”实例后调用terminate 什么():std::坏的 中止(堆芯转储)
提前感谢要使您的程序正常运行,必须做到以下两点:
- 操作系统必须是64位的(这可能是您正在运行的,否则您将被限制为3GB RAM)
- 您的程序必须构建为64位应用程序,这样它才能实际处理这么多内存
对于任何其他平台/编译器,您都应该能够通过Google获取文档,当然您使用什么向量?有头顶吗?你需要连续内存吗?你能提供你用来分配向量的实际代码吗?它是哪种环境?窗户*尼克斯?哪个编译器(以便我们可以在需要时帮助您设置标志)假设您的车辆在停车场占据10个位置。有一个停车场,有15个免费停车位。但你还是不能停车!为什么?因为没有一个缺口足够大。计算机内存就是这样,我使用双向量,我只写向量a(800000000);然后我想知道它的意思,程序必须构建为64位应用程序,它必须是64位的。在64位平台上运行32位应用程序仍然将其内存访问限制为32位/指针(最多4GB),因此应用程序必须使用64位指针来寻址超出32位限制的内存