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