vector.resize()中的分配错误
Bad alloc in vector.resize()
我在Visual Studio 2017(社区版(中尝试了以下C++代码:
vector <int> V;
V.resize(600000000);
for (int i = 0;i < 600000000;i++)
{
if (i % 10000000 == 0)cout << i << endl;
}
但得到:
异常:内存位置处的std::bad_alloc
我在属性(项目的(->链接器->系统中更改了堆保留大小、堆提交大小、堆栈保留大小和堆栈提交大小。此外,我在控制面板中将"所有驱动器的总分页文件大小"更改为100GB RAM(我有一个120GB RAM的虚拟机(。它没有起作用。
有没有办法把超过600000000个整数放到向量中?
确保编译的是64位二进制文件,而不是32位二进制文件。
600.000000整数是2.400.000.000字节(~2gb(,默认情况下对于32位二进制文件来说太多了。
如果您需要超过2gb的32位二进制文件,您可以在Visual Studio 中使用/LARGEADDRESSAWARE标志进行链接
编辑:正如重复数据删除器所提到的,该标志可能无法使此示例在32位中工作。最好的解决方案是构建一个64位二进制文件。
相关文章:
- vector.resize()中的分配错误
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 如何处理以下代码中的内存分配错误
- 动态内存分配错误
- C++向量上的分配错误
- libtorrent file_storage无效:分配错误
- 数组大小分配错误
- 只读位置'__result.std::_Rb_tree_const_iterator<_Tp>::operator*<long long int>()'分配错误
- C++ 内存分配错误?
- 具有特征成员变量分类和分配错误的C 类
- 为什么这种递归子集和算法会导致指针分配错误
- CSTRING分配错误
- 运行时间内存分配错误
- 以下C++代码给出了一些内存分配错误
- 尝试在c++中创建USRP对象时分配错误
- 多阵列动态内存分配错误
- C++:矢量分配错误
- 通过结构指针访问结构变量分配错误数据
- 声明向量时出现神秘的 malloc 内存分配错误