我想提供一个带有以下C ++结构的API:
struct fixed_string64 {
char array[64];
};
typedef fixed_string64 st64_t;
大多数人都告诉你,做任何能够占用大量堆栈空间的东西通常都不是一个好主意,但那么,“很多”是多少呢?
在C ++ 11中,我们有类似is_stack_hungry<st64_t>::value
的内容吗?
答案 0 :(得分:3)
堆栈的大小是实现定义的,我不知道从系统/或编译器获取该信息的标准方法。但是,大多数编译器应该允许您设置堆栈大小(如gcc中的--stack
)。
但是,“使堆栈尽可能大”绝对不是我的建议 - 如果你需要,那么你做错了。
例如,在您的示例中,您可以提供构造函数和析构函数,以便分配和释放内存。
struct fixed_string64 {
char* array;
fixed_string64(){
array = new char[64];
}
~fixed_string64(){
delete [] array;
}
};