2012-06-09 44 views
0

我想運行這個巨大的C++項目,在內存中使用高達8.3 GB的內存。我可以在某些情況下運行此程序嗎?還是不可能?C++上的內存分配限制

+0

這是一個令人困惑的問題。如果你知道它使用8.3GB,那麼你必須知道它運行。 –

+0

不..我已經計算出它應該使用多少內存。如果我運行它,它說不好的分配,所以我必須以某種方式擴展內存限制。 –

+2

然後你並不知道程序使用什麼 - 但是你想讓程序運行的數據集的大小。 –

回答

7

這很好。你只需要在64位架構上,並確保有足夠的交換空間+物理內存可用

5

這真的取決於。如果程序需要始終具有全部8.3 GB的內存(working size),則可能需要在計算機中安裝類似數量的內存。

現在假設您有4 GB的RAM。在這種情況下,由於使用了swap(爲了擴大虛擬內存大小,內存交換進入和退出的硬盤區域),您將最有可能執行該程序。但是,即使它實際上可以工作,但由於trashing,它可能運行非常緩慢(達不到真正可用的程度)。另一方面,如果您的程序處理8.3 GB的數據,但它在較小的數據塊中處理,這意味着所有數據都不在內存中。然後,你不需要在你的電腦上安裝如此大量的RAM。

由於奧利查爾斯沃思剛提過,您將需要一個64位的系統(包括硬件和OS) 或者,至少,一個系統 PAE能力,如果你想在你的系統 安裝超過4 GB的RAM 。

+1

PAE不會幫你:即使操作系統可以使用更多,每個程序仍然限制在4GB的內存中。 – Yexo

+0

@Yexo是的,你是對的。在這種情況下,由於OP似乎要求單個應用程序(過程),所以PAE將毫無用處。我相應地解決了我的答案。 – betabandido

2

是的,這是可能的。您需要處於64位環境中,當然可以使用RAM。您可能仍然無法一次分配超過4GB的連續地址空間。不過,您可能需要以更小的塊來分配它。