矢量无效的分配大小
vector invalid allocation size
当我试图创建并调整向量以容纳最大项目数(vector::max_size())时,我在运行时遇到调试错误:
"无效的分配大小:429467292"
我想知道如果max_size()应该返回向量中的最大项数,为什么你不能调整大小。。。
vector<int> vc;
vc.resize(vc.max_size());
我也会尝试在VS2010中启用LARGADRESSAWARE:On,但这无济于事。想知道这是否是一个正确的想法。。。
有人知道线索吗?
max_size()
是矢量可以存储的元素的绝对最大数量。使用默认分配器,这通常是std::numeric_limits<std::size_t>::max() / sizeof(T)
。也就是说,它是您可能创建的该类型的最大数组。
然而,您永远无法实际分配这么大的数组。程序加载的模块会占用程序的一些地址空间,每个线程的堆栈也是如此。您的程序中可能会有其他动态分配的对象(由您或运行时分配)。这些都会导致地址空间碎片化,这意味着可用地址空间的最大连续块远小于可用地址空间总量。
简而言之,在实践中不可能分配具有max_size()
元素的vector
。
相关文章:
- 属性分配无效:"displayText"是文本字段 qml 中的只读属性
- 对象分配-成员函数的使用无效错误
- libtorrent file_storage无效:分配错误
- Realloc():即使使用malloc()分配内存,旧大小也无效
- 无效的char阵列分配
- 分配大小无效:4294967295 字节
- 无效的free() / delete / delete[] / realloc(), 4 字节在大小为 16 的块内分配
- 从模板分配无效指针
- 矢量无效的分配大小
- 从dll调用函数时分配大小无效
- QtQuick:QQmlApplicationEngine无法加载组件qrc:/main.qml:23附加对象分配无效
- 无效解除分配时的 xmemory0 异常
- 为联合中的位域分配无效值
- 间接数组分配有效,而直接数组分配无效
- std::vector 的替代方案,因为重新分配会使指向元素的指针无效
- 视觉对象C++:分配大小无效.为什么会这样
- 解除分配无效双指针
- 分配大小无效?C++
- 是否可以在不使指针无效的情况下调整/重新分配大块内存
- 无效的分配大小(在派生类复制构造函数中)