我正在使用32位Ubuntu 12.04。 RAM为7.7 GB。当我运行某个进程(用C ++编写)并达到50%的RAM使用率时,这样的进程会抛出一个“std :: bad_alloc”。 奇怪的是堆大小是无限的(命令ulimit -v返回“unlimted”)。 那可能是什么原因?
答案 0 :(得分:5)
在大多数32位平台上,进程不可能处理超过4GB(2 ^ 32字节)的虚拟内存。在32位Linux上,为内核保留了1GB的地址空间,因此用户进程限制为3GB的可寻址内存。
答案 1 :(得分:3)
在32位计算机上,即使使用PAE,单个进程地址空间也不能大于4GB。