代码如下:
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 来分配空间?
任何人都可以帮助我吗?非常感谢。