类的数组中的最大对象数

时间:2016-09-20 17:54:59

标签: c++ arrays class object

我有这堂课:

class tree
{
public: 
    int row;
    int column;
};

我想为类tree创建总共大约1024个对象,但如果我在tree a[90]中将值增加到90以上,则会得到segmentation fault

tree a[90]; //Ok
tree a[1024]; //Segmentation fault

我们可以创建的对象数量是否有最大限制,或者是否有任何其他方法可以以数组的形式创建1024个对象?

1 个答案:

答案 0 :(得分:3)

  

是否有最大限制。我们可以创建的对象?

嗯,是的。它被称为堆栈限制。这取决于你的堆栈有多大。你的堆栈大小是:

stack_size = sizeof(int) * 2 * 90

如果你的平台sizeof(int)是4(通常是这样),你有4 * 2 * 90 = 720 bytes的堆栈,似乎非常小。

无论哪种方式,分配大量对象的正确方法都在上,它通常比堆栈有更多的空间:

//std::vector allocates its elements on the heap
std::vector<tree> a(1024);

如果由于某种原因无法使用std::vector,您仍然可以使用旧的学校风格动态数组(不推荐):

tree* a = new tree[1024];