【发布时间】:2010-12-08 05:32:16
【问题描述】:
在 Linux 上,如果内存不足,malloc 不一定会返回空指针。如果你真的内存不足,你可能会取回一个指针,然后让 OOM 杀手开始吃进程。 c++ 的运算符 new 是否也是如此,还是会得到 bad_alloc 异常?
【问题讨论】:
标签: c++ linux new-operator bad-alloc
在 Linux 上,如果内存不足,malloc 不一定会返回空指针。如果你真的内存不足,你可能会取回一个指针,然后让 OOM 杀手开始吃进程。 c++ 的运算符 new 是否也是如此,还是会得到 bad_alloc 异常?
【问题讨论】:
标签: c++ linux new-operator bad-alloc
operator new 也是如此,唉 :^(
【讨论】:
这是一个内核函数而不是语言函数 - 您可以使用 vm.overcommit_memory 和 vm.overcommit_ratio sysctls 来控制它。
它们在/proc/sys/vm/overcommit_memory 和/proc/sys/vm/overcommit_ratio 的proc 文件系统中可见。
【讨论】: