C++ 标准::坏的

C++ 标准::坏的,c++,bad-alloc,C++,Bad Alloc,我正在开发一款32位的Ubuntu 12.04。RAM为7.7GB。当我运行某个进程(用C++编写)并达到RAM使用率的50%时,这样的进程抛出一个“std::bad_alloc”。 奇怪的是堆大小是无限的(命令ulimit-v返回“unlimted”)。 那么原因是什么呢?在大多数32位平台上,进程不可能寻址超过4GB(2^32字节)的虚拟内存。在32位Linux上,为内核保留1GB的地址空间,因此用户进程的可寻址内存限制为3GB。在32位机器上,即使有,单个进程的地址空间也不能大于4GB

我正在开发一款32位的Ubuntu 12.04。RAM为7.7GB。当我运行某个进程(用C++编写)并达到RAM使用率的50%时,这样的进程抛出一个“std::bad_alloc”。 奇怪的是堆大小是无限的(命令ulimit-v返回“unlimted”)。
那么原因是什么呢?

在大多数32位平台上,进程不可能寻址超过4GB(2^32字节)的虚拟内存。在32位Linux上,为内核保留1GB的地址空间,因此用户进程的可寻址内存限制为3GB。

在32位机器上,即使有,单个进程的地址空间也不能大于4GB