问题
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?
回答1:
The same is true for operator new, alas :^(
回答2:
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
.
来源:https://stackoverflow.com/questions/1592535/operator-new-and-bad-alloc-on-linux