使用矢量时,显示“内存不足”。
为了解决这个问题,我使用 max_size() 来检查,然后保留或 Push_back。
如果max_size()比保留值大应该没问题,但是不行!那么max_size()的意义是什么?
我在 Windows 7 和 Visual Studio 2010 中编译了下面的演示。我的电脑有 4GB RAM。当reserved是max_size()的1/2时,失败。
max_size()=2^32/sizeof(CPoint3D)-1=268435455
Run Code Online (Sandbox Code Playgroud)
演示中max_size()的1/4就可以了。在我的实际项目中,直到1/10都可以。
矢量的最大尺寸是多少,如何放大它?
当我将大量元素推入std::vector. 为了避免这个错误,我vector::max_size()首先检查了,并使用vector::reserve()预分配内存。然而,这不起作用。在演示项目中,当我保留 1/4 的max_size. 在实际项目中,当我保留1/10时,就会出现错误。我正在运行 Windows 7 并使用 Visual Studio 2010 进行编译。我的计算机有 4GB RAM。
如果max_size不起作用,我如何找出可以为 a 分配的最大元素数vector?