谁处理 C++ "new" 内存分配失败?
Who handles C++ "new" memory allocation failure?
在C语言中,人们经常在使用malloc之后检查空指针。但是,在 C++ 中,我们将使用 "new"。我做了一些搜索,下面是对 malloc 和 new 之间区别的一种解释:
https://isocpp.org/wiki/faq/freestore-mgmt#new-malloc-diff
引自上文link:
malloc() reports memory exhaustion by returning 0. new reports allocation and initialization errors by throwing exceptions (bad_alloc).
但是 OS(Linux 或 windows)如何对此 bad_alloc 异常做出反应?
他们不需要。 OS 不需要 "react" 任何东西。您的程序可能想要对条件做出反应,或者它可能不处理异常并终止。无论哪种方式,内存都没有分配,OS 不再关心,如果它首先关心(甚至知道)!
在C语言中,人们经常在使用malloc之后检查空指针。但是,在 C++ 中,我们将使用 "new"。我做了一些搜索,下面是对 malloc 和 new 之间区别的一种解释: https://isocpp.org/wiki/faq/freestore-mgmt#new-malloc-diff
引自上文link:
malloc() reports memory exhaustion by returning 0. new reports allocation and initialization errors by throwing exceptions (bad_alloc).
但是 OS(Linux 或 windows)如何对此 bad_alloc 异常做出反应?
他们不需要。 OS 不需要 "react" 任何东西。您的程序可能想要对条件做出反应,或者它可能不处理异常并终止。无论哪种方式,内存都没有分配,OS 不再关心,如果它首先关心(甚至知道)!