2

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

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

大多数人告诉你,做任何占用大量堆栈空间的事情通常不是一个好主意,但是,“很多”是多少?

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

4

1 回答 1

3

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

然而,“使堆栈尽可能大”绝对不是我的建议——如果你需要这样做,那么你做错了什么。

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

struct fixed_string64 {
  char* array;

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


  ~fixed_string64(){
    delete [] array;
  }
};
于 2013-09-20T16:00:26.700 回答