一个类的数组中对象的最大数目

Maximum number of objects in an array for a class

本文关键字:数组 最大数 对象 一个      更新时间:2023-10-16

我有这样一个类:

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个对象?

号码有最大限制吗?我们可以创建的对象?

嗯,是的。这叫做堆栈限制。这取决于你的堆栈有多大。这里的堆栈大小是:

stack_size = sizeof(int) * 2 * 90

如果在您的平台上sizeof(int)是4(通常是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];