【问题标题】:std::bad_alloc ulimitstd::bad_alloc ulimit
【发布时间】:2013-01-10 15:24:37
【问题描述】:

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

【问题讨论】:

    标签: c++ bad-alloc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 2019-11-06
        • 1970-01-01
        • 2012-08-24
        相关资源
        最近更新 更多