gpt4 book ai didi

c++ - 我们可以创建大小为执行时常量的静态数组吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:23 25 4
gpt4 key购买 nike

我们都知道静态数组的基本规则:

int size = 20;
char myArray[size];

不合法。并且。

const int size = 20;
char myArray[size];

没问题。

但是,这个呢。

int f(const int size)
{
char myArr[size];
}

void main()
{
f(2);
f(1024);
}

MSVC 说这是一个错误,gcc 似乎可以正常编译和执行它。

显然,它不可移植,但它应该被接受吗?

哪个编译器在那种情况下做正确的事情?

此外,如果编译器允许,良好的编程标准/实践是否应该允许?

编辑:我的想法是,我希望为速度分配堆栈,但在编译时我不知道数组的大小。我知道还有其他一些解决方案,堆栈分配可能不是一个有意义的优化,但我认为这是一个有趣的用法。

最佳答案

没有。 C++ 没有变长数组。 C99 可以,并且 gcc 通过扩展允许它。

使用 std::vector


假设您已经分析了您的应用程序并发现这是一个瓶颈,请编写一个从堆栈分配的自定义分配器并使用它。如果没有,那就没有问题。

堆栈分配非常快,但这可能不会成为实际应用程序中的主要问题。 (您应该有一个自定义的内存管理方案,其性能将接近堆栈分配的速度。)

关于c++ - 我们可以创建大小为执行时常量的静态数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com