谁处理C ++“新”内存分配失败?

在C中,人们经常在使用malloc后检查空指针。 但是,在C ++中,我们将使用“new”。 我已经做了一些搜索,一个解释malloc和new之间的区别如下: https : //isocpp.org/wiki/faq/freestore-mgmt#new-malloc-diff

从上面的链接引用:

malloc()通过抛出exception(bad_alloc)返回0.报告分配和初始化错误来报告内存耗尽。

但是OS(Linux或Windows)如何对这个bad_allocexception做出反应?

他们没有。 操作系统不需要对任何事情做出“反应”。 您的程序可能希望对条件做出反应,或者可能使exception未处理并终止。 无论哪种方式,内存都没有分配,操作系统不再关心,如果它首先关心(甚至知道它)!