哪里可以找到C ++中operator new的确切实现?

时间:2017-08-31 08:45:51

标签: c++ gcc new-operator

有时使用malloc实现operator new,可以在嵌入式系统中找到它的确切实现,运行Raspbian。

1 个答案:

答案 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实现的。

  

在嵌入式系统中

嵌入式系统的标准库通常是独立式,因此根本不一定提供mallocnew

  

跑步说Raspbian。

Raspbian是一个非常全面的操作系统。它默认使用libstdc ++。