gpt4 book ai didi

c++ - 如果大小在编译时已知,是否有一种干净的方法在堆栈上分配可变大小的对象?

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:44 26 4
gpt4 key购买 nike

考虑以下代码,它试图在堆栈上分配一个包含可变长度数组的对象。

#include <stdio.h>

struct ContainVarLen {
int normal;
int varlen[];
};


int main(){
ContainVarLen c;
}

假设我在编译时知道我在 varlen 对象中正好需要 8 个字节的数据。

是否有语法来指定我想要这个额外的 8 字节分配?

我认为在对象之前声明一个字节数组似乎是一种 hack。

最佳答案

template <std::size_t NBytes>
class ContainVarLen
{
int normal;
int varlen[NBytes / sizeof(int)];
};

现在用任何 constexpr 实例化:

constexpr long fib(const int x)
{
return x <= 1 ? 1 : fib(x - 1) + fib(x - 2);
}

int main()
{
ContainVarLen<fib(7)> c;
...
}

关于c++ - 如果大小在编译时已知,是否有一种干净的方法在堆栈上分配可变大小的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877383/

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