我有这堂课:
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个对象?
答案 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];