如何使C ++程序使用超过4GB的RAM?

时间:2014-09-04 16:13:05

标签: c++ linux x86-64 ram

我的桌面是64位,有16GB内存。

是否有启动运行的编译时设置?还是运行时?

3 个答案:

答案 0 :(得分:2)

您正在运行Linux。如果这不起作用,最可能的问题是,尽管有一台x86_64机器,但你已经安装了一个32位版本的操作系统,尽管是在一个支持64位的处理器上。如果您有64位版本的操作系统,您的编译器工具链应该自动生成可以使用超过4GB内存的代码。

要检查,请键入:

uname -a

您应该看到类似的内容:

Linux nimrod-ubuntu 3.13.0-29-generic #53~precise1-Ubuntu SMP Wed Jun 4 22:06:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

请注意x86_64而非i386

虽然理论上你可以从i386交叉编译到x86_64,但在大多数情况下,这不值得麻烦,你会想要重新安装。

答案 1 :(得分:1)

这取决于您是指虚拟内存还是物理内存。

对于虚拟内存,您只需将代码编译为64位应用程序,您的程序自然会拥有最多2 ^ 64GB的虚拟内存。

对于物理内存,它取决于操作系统为程序分配多少内存。如果有足够数量的物理内存且您已经使用超过4GB的虚拟内存,则您的程序很可能也占用超过4GB的物理内存。

答案 2 :(得分:1)

gcc的64位标志是-m64。

如果你的机器是64位是默认的,你需要给-m32编译32位版本。

If you want more info look here