char bytes[0x7FFFFFFF]; /* this? */
int main()
{
return 0;
}
超过2Gb? (如果我正确计算)
我使用的是32位系统,内存为4Gb。在一个或多或少的不同系统中?
答案 0 :(得分:1)
首先,这将取决于许多因素,例如平台甚至平台上的配置。 32位进程可用的最大地址空间通常受用户/内核空间分割所限制,通常为3G / 1G或2G / 2G(用户/内核)。
现在,可能创建这样的数组实际上并不会“保留”所有内存。相反,它会映射到虚拟地址空间,并且在访问之前实际上不会开始消耗内存(请参阅:on demand paging)。
另外,请记住,您必须与程序中的其他所有内容共享地址空间,包括代码。如果你用数组消耗了所有这些,你的代码将在哪里?
答案 1 :(得分:0)
取决于:
如果你在win32上运行,你甚至不使用4GB或RAM!