0

私がインターネットで見つけた C++の唯一のalloca()代替品は、次のようなものです。

template <typename F>
void alloca_(::std::size_t const n, F&& f) noexcept(noexcept(f({})))
{
  alignas(::std::max_align_t) char p[n];

  f(p);
}

しかし、明らかに、これはalloca()私たちが知っていて愛しているものではなく、関数でもマクロでもありません。関数呼び出しalloca()のセマンティクスにより近い実装を記述できますか? alloca()おそらくマクロとして?マクロであろうと関数であろうと、ヒープではなくスタックからスペースを割り当てる必要があります。

4

0 に答える 0