【发布时间】:2012-03-26 05:24:19
【问题描述】:
使用矢量时,显示“内存不足”。
为了修复它,我使用 max_size() 进行检查,然后进行保留或 push_back。
如果 max_size() 大于保留值,应该没问题,但不是!那么max_size()是什么意思呢?
我在 Windows 7 和 Visual Studio 2010 中编译了下面的演示。我的 PC 有 4GB RAM。当 reseverd 是 max_size() 的 1/2 时,它会失败。
max_size()=2^32/sizeof(CPoint3D)-1=268435455
demo 中 max_size() 的 1/4 就可以了。在我的实际项目中,直到 1/10 都可以。
向量的最大尺寸右边是多少,怎么放大?
当我将大量元素推送到 std::vector 时,出现“内存不足”错误。为了避免这个错误,我先检查vector::max_size(),然后使用vector::reserve()预分配内存。但是,它不起作用。在一个演示项目中,当我保留max_size 的1/4 时出现错误。在实际项目中,当我保留它的 1/10 时会发生错误。我正在运行 Windows 7 并使用 Visual Studio 2010 进行编译。我的计算机有 4GB RAM。
如果max_size 不起作用,我如何找出可以为vector 分配的最大元素数?
【问题讨论】: