看看这段代码: int main() { int m; cin >> m; vector<int> cnt(m +1,0); } 现在,如果我取m=999999298(这是一个整数,对吧?),为什么我在向量中会得到“内存分配错误”的错误?
vector<int> cnt(m +1,0); 你尝试声明一个名为vector的变量,它要分配999999299个整数元素并且每个元素的值都是0。考虑到整数是4字节,这大约需要3.7 GB的内存空间。看起来你的应用程序没有被允许使用那么多的内存,这就是为什么你会收到“内存分配失败”的错误消息。至于为什么有这样的限制,你可以阅读这个问题及其答案。
sizeof(int)
通常是4(32位)。 999999298 * 4 = 3999997192字节= 3906247.26千字节= 3814.69兆字节= 3.72 GB。 如果您使用的是32位平台,则可能无法分配此大小的内存。 即使在64位上,可能也没有足够的连续内存可用。 - Scheff's Cat