2012-06-09 46 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的连续地址空间。不过,您可能需要以更小的块来分配它。