2015-06-14 98 views
-2

我只是想知道为什么这种行为出现?分割故障(核心转储)为载体声明

如果我只是声明vector< pair<int,int> > graph[1000050];超出了我的main()我的计划不会给任何错误,但发生如果我只是把它声明我main()分段故障里面,但是为什么呢?

+4

这可能是太大了你的筹码。但是你真的想要一个向量数组吗? – juanchopanza

回答

2

这是太大的堆栈。改为使用矢量矢量。

-2

在主它具有块范围,因此它被声明为局部变量和一个试图分配它在栈上。您要求分配10mil x(sizeof(int)* 2 +对开销向量)字节,这对您的堆栈来说显然太多了。

矢量分配其内容连续在内存中,所以你可能要考虑不同的数据结构,它没有这样做。

+3

它不在主体之外的“堆”上。 – juanchopanza