堆栈对象的最大大小

时间:2013-09-20 15:57:20

标签: c++ c++11 stack

我想提供一个带有以下C ++结构的API:

struct fixed_string64 {
  char array[64];
};
typedef fixed_string64 st64_t;

大多数人都告诉你,做任何能够占用大量堆栈空间的东西通常都不是一个好主意,但那么,“很多”是多少呢?

在C ++ 11中,我们有类似is_stack_hungry<st64_t>::value的内容吗?

1 个答案:

答案 0 :(得分:3)

堆栈的大小是实现定义的,我不知道从系统/或编译器获取该信息的标准方法。但是,大多数编译器应该允许您设置堆栈大小(如gcc中的--stack)。

但是,“使堆栈尽可能大”绝对不是我的建议 - 如果你需要,那么你做错了。

例如,在您的示例中,您可以提供构造函数和析构函数,以便分配和释放内存。

struct fixed_string64 {
  char* array;

  fixed_string64(){
    array = new char[64];
  }


  ~fixed_string64(){
    delete [] array;
  }
};