分割故障(核心转储)为载体声明
问题描述:
我只是想知道为什么这种行为出现?分割故障(核心转储)为载体声明
如果我只是声明vector< pair<int,int> > graph[1000050];
超出了我的main()
我的计划不会给任何错误,但发生如果我只是把它声明我main()
分段故障里面,但是为什么呢?
答
这是太大的堆栈。改为使用矢量矢量。
答
在主它具有块范围,因此它被声明为局部变量和一个试图分配它在栈上。您要求分配10mil x(sizeof(int)* 2 +对开销向量)字节,这对您的堆栈来说显然太多了。
矢量分配其内容连续在内存中,所以你可能要考虑不同的数据结构,它没有这样做。
+3
它不在主体之外的“堆”上。 – juanchopanza
这可能是太大了你的筹码。但是你真的想要一个向量数组吗? – juanchopanza