有时使用malloc实现operator new,可以在嵌入式系统中找到它的确切实现,运行Raspbian。
答案 0 :(得分:1)
哪里可以找到C ++中operator new的确切实现?
您将在C ++标准库的源代码中找到它。这是来自libstdc++的那个:
_GLIBCXX_WEAK_DEFINITION void *
operator new (std::size_t sz) _GLIBCXX_THROW (std::bad_alloc)
{
void *p;
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
while (__builtin_expect ((p = malloc (sz)) == 0, false))
{
new_handler handler = std::get_new_handler ();
if (! handler)
_GLIBCXX_THROW_OR_ABORT(bad_alloc());
handler ();
}
return p;
}
正如您所看到的,在这种情况下,它是使用malloc
实现的。
在嵌入式系统中
嵌入式系统的标准库通常是独立式,因此根本不一定提供malloc
或new
。
跑步说Raspbian。
Raspbian是一个非常全面的操作系统。它默认使用libstdc ++。