看看这段代码:
int main()
{
int m;
cin >> m;
vector<int> cnt(m +1,0);
}
现在,如果我接受m = 999999298(这是一个整数,对吗?)。为什么在向量中出现“内存分配错误”错误。
答案 0 :(得分:8)
vector<int> cnt(m +1,0);
您声明的vector
试图分配999999299个 integer 元素,每个元素的值均为0。将整数的大小视为4个字节,这大约是3.7 GB的内存。看来您的应用程序没有那么多的内存。这就是为什么您会收到“内存分配错误”错误的原因。
关于为什么有这样的限制,您可以阅读此question及其答案。