2014-09-04 75 views
0

我的桌面是64位,並有16GB RAM。如何使C++程序使用超過4GB的RAM?

是否有編譯時間設置來啓用運行?還是運行時?

+5

您只需編譯爲x64平臺即可。由於指針大小,4GB是32位程序的最大值。 – SHR 2014-09-04 16:15:54

+1

你的問題似乎是基於誤解。只要操作系統能夠使程序使用超過4GB的RAM,就沒有什麼特別的事情需要做。問題是使用超過4GB的虛擬地址空間。 – 2014-09-04 16:21:59

+0

'ulimit -a'的結果是什麼? – 2014-09-04 16:24:11

回答

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_64i386

雖然你理論上可以從i386x86_64進行交叉編譯,但在大多數情況下,這不值得冒險,你會想要重新安裝。

1

這取決於您是指虛擬內存還是物理內存。

對於虛擬內存,您只需將代碼編譯爲64位應用程序,並且程序自然會擁有高達2^64GB的虛擬內存。

對於物理內存,它取決於操作系統爲程序分配多少內存。如果有足夠的物理內存可用,並且您已經使用了超過4GB的虛擬內存,則很可能您的程序也佔用了超過4GB的物理內存。

相關問題