Inc*_*bus 4 c++ size stl vector std
当我尝试创建和调整向量以保持最大项目数(vector :: max_size())时,我在运行时遇到调试错误:
"无效的分配大小:429467292"
我想知道为什么你不能调整大小,如果max_size()应该返回向量中的最大项目数...
vector<int> vc;
vc.resize(vc.max_size());
Run Code Online (Sandbox Code Playgroud)
我也尝试启用LARGADRESSAWARE:在VS2010中启用,但这没有帮助.想知道这是否是一个正确的thoguth ...
有人知道吗?
max_size()
是矢量可以存储的绝对最大元素数.使用默认分配器,通常是这样std::numeric_limits<std::size_t>::max() / sizeof(T)
.也就是说,它是您可能创建的最大类型的数组.
但是,您实际上永远无法分配那么大的数组.程序加载的模块占用了程序的一些地址空间,每个线程的堆栈也是如此.您可能在程序中有其他动态分配的对象(由您或运行时分配).这些都有助于解决空间碎片问题,这意味着可用地址空间的最大连续块远小于可用地址空间的总量.
简而言之,在实践中不可能分配vector
带max_size()
元素.
归档时间: |
|
查看次数: |
352 次 |
最近记录: |