Linux 上的运算符 new 和 bad_alloc

发布于 2024-08-08 11:41:15 字数 116 浏览 14 评论 0原文

在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

微凉 2024-08-15 11:41:15

它是一个内核函数,而不是一个语言函数 - 您可以使用 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 and vm.overcommit_ratio sysctls.

They're visible in the proc filesystem at /proc/sys/vm/overcommit_memory and /proc/sys/vm/overcommit_ratio.

暮光沉寂 2024-08-15 11:41:15

对于operator new也是如此,唉:^(

The same is true for operator new, alas :^(

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文