我在 Internet 上找到的唯一alloca()
C++ 替代品如下所示:
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()
也许作为一个宏?无论是宏还是函数,它都应该从堆栈而不是堆中分配空间。