gpt4 book ai didi

c++ - 如果我在返回后声明它,存储数组在哪里?

转载 作者:行者123 更新时间:2023-11-30 00:52:38 27 4
gpt4 key购买 nike

我有代码 C++11:

template<std::size_t n>
static inline constexpr uint32_t mask() noexcept
{
static_assert(n <= 32, "!");
using list = uint32_t[];

return list{
0x0u,
0x1u, 0x3u, 0x7, 0xfu, 0x1fu, 0x3fu, 0x7fu, 0xffu,
0x1ffu, 0x3ffu, 0x7ffu, 0xfffu, 0x1fffu, 0x3fffu, 0x7fffu, 0xffffu,
0x1ffffu, 0x3ffffu, 0x7ffffu, 0xfffffu, 0x1fffffu, 0x3fffffu, 0x7fffffu, 0xffffffu,
0x1ffffffu, 0x3ffffffu, 0x7ffffffu, 0xfffffffu, 0x1fffffffu, 0x3fffffffu, 0x7fffffffu, 0xffffffffu
} [ n ];
}

问:list数组存放在哪里? (在静态内存、自动内存或无处存储)?

最佳答案

在正常功能中,它将是一个临时的,存储在自动内存中。由于 n 是一个编译时常量,它可以被优化为简单地返回值,删除数组。

但是,这是 constexpr,因此应该在编译时计算返回值。该数组在运行时根本不应该存在。

关于c++ - 如果我在返回后声明它,存储数组在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635956/

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