在哪里可以找到C 中新运营商的确切实现

Where can one find the exact implementation of operator new in C++?

本文关键字:运营商 实现 在哪里      更新时间:2023-10-16

有时会通过malloc实现新运营商,在嵌入式系统中可以找到它的确切实现,运行说raspbian。

在哪里可以找到C 中新运营商的确切实现?

您会在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实施的。

在嵌入式系统中

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

运行说raspbian。

raspbian几乎是一个完全爆炸的操作系统。默认情况下,它将使用libstdc 。