Linux 上的运算符 new 和 bad_alloc
在 Linux 上,如果内存不足,malloc 不一定返回空指针。如果内存确实不足,您可能会取回一个指针,然后让 OOM 杀手开始吃掉进程。 C++ 的 new 运算符也是如此吗?还是会出现 bad_alloc 异常?
On Linux, malloc doesn't necessarily return a null pointer if you're out of memory. You might get back a pointer and then have the OOM killer start eating processes if you're really out of memory. Is the same true for c++'s operator new or will you get the bad_alloc exception?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它是一个内核函数,而不是一个语言函数 - 您可以使用 vm.overcommit_memory 和 vm.overcommit_ratio sysctls 来控制它。
它们在 proc 文件系统的
/proc/sys/vm/overcommit_memory
和/proc/sys/vm/overcommit_ratio
中可见。It's a kernel function rather than a language function - and you can control it with the
vm.overcommit_memory
andvm.overcommit_ratio
sysctls.They're visible in the proc filesystem at
/proc/sys/vm/overcommit_memory
and/proc/sys/vm/overcommit_ratio
.对于operator new也是如此,唉:^(
The same is true for operator new, alas :^(