向量 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
,因为您可以直接创建大小为 10001
的 vector
元素初始化为 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);
}
#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
,因为您可以直接创建大小为 10001
的 vector
元素初始化为 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);
}