向量 push_back 内存访问在 Visual Studio 中被拒绝

vector push_back memory access denied in Visual Studio

#include <stdio.h>
#include <vector>

using namespace std;

int main()
{
    vector<int> numbers;

    numbers.resize(10001);
    for (int i = 0; i < 10000; i++)
    {
        numbers.push_back(1);
    }

    return 0;
}

如果我在vector中输入超过5000个1,我会得到以下错误,我不明白。

除了内存溢出,其他没有任何疑问。但是 int type = 4 bytes,所以 4byte * 10000 = 40000byte 0.04mb

为什么我会收到错误消息?

该错误似乎与您显示的代码无关。

现在,查看您的代码,无需使用 resize 然后使用 push_back,因为您可以直接创建大小为 10001vector 元素初始化为 1 如下图:

std::vector<int> numbers(10001,1);// create vector of size 10001 with elements initialized to 1

或者您可以使用 std::vector::reserve 而不是 std::vector::resize,尽管这 完全没有必要,因为您可以使用上面显示的第一种方法。

vector<int> numbers;

numbers.reserve(10001); //use reserve instead of resize
for (int i = 0; i < 10000; i++)
{
    numbers.push_back(1);
}