代码如下:
template <int __inst>
void*
__malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n)
{
    void (* __my_malloc_handler)();
    void* __result;
    for (;;) {
        __my_malloc_handler = __malloc_alloc_oom_handler;
        if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; }
        (*__my_malloc_handler)();
        __result = malloc(__n);
        if (__result) return(__result);
    }
}
我有两个问题。1.为什么_S_oom_malloc使用无限循环?2.众所周知,__malloc_alloc_template::allocate函数中malloc失败时会调用_S_oom_malloc。为什么它使用 malloc 来分配空间?
任何人都可以帮助我吗?非常感谢。