私がインターネットで見つけた 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()
おそらくマクロとして?マクロであろうと関数であろうと、ヒープではなくスタックからスペースを割り当てる必要があります。