我在互联网上找到的唯一的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()
实现更紧密地调用语义吗?也许作为宏观?无论是宏还是函数,都应该从堆栈中分配空间,而不是堆。