C++核心指南提到了一个名为a的东西stack_array.它的用法如下:
const int n = 7;
int m = 9;
void f()
{
std::array<int, n> a1;
stack_array<int> a2(m); // A stack-allocated array.
// The number of elements are determined
// at construction and fixed thereafter.
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是如何实施这样的课程呢?我们如何在运行时动态确定堆栈大小?
据我所知,stack_array建议使用标准C++(截至当前标准)无法实现的假设类.它的实现需要(当前)非标准的编译器特定支持,我怀疑这种非标准支持甚至存在.
最接近的是一个宏,它包含一个调用alloca(非标准功能,许多编译器都支持).请参阅roalz的答案,获取具体实施的链接.我不确定这种方法是否可以达到VLA无法实现的任何安全性(许多编译器支持的另一个非标准功能) - 这并不是说VLA可以安全使用.
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |