【发布时间】:2016-12-02 14:36:12
【问题描述】:
如果您通读 GNU libs 文档,您会看到:
一些非 GNU 系统不支持 alloca,因此它的可移植性较差。 但是,用 C 编写的 alloca 的较慢仿真可用于 在有此缺陷的系统上使用。
假设 VLA 也不可用,alloca() 的 C 模拟会是什么样子?
【问题讨论】:
-
在 C++ 中这将相当容易,但我怀疑您是否可以在标准 C 中编写可移植的
alloca函数。 -
真的吗?你能给出一个提示,你将如何在 C++ 中做到这一点?
-
@user1095108 使用 C++ 你可以只使用 std::shared_ptr,我想。
-
@WillihamTotland 是的,如果你想从堆中分配。
-
一个 emulation 应该只尊重全局接口,我的意思是从当前函数返回时自动释放分配的块。本地对象的析构函数可以做到这一点,而像
shared_ptr或uniq_ptr这样的智能指针会自动做到这一点。