矢量分配太多内存

时间:2015-01-15 19:21:54

标签: c++ vector

我的std :: Vector分配了太多内存而没有任何对象。

在头文件中:

std::vector<ge::Rect> m_Frames;

现在这应该调用源文件中的默认构造函数,但仅仅是出于推测,我在类构造函数中做了这个:

m_Frames.reserve(10);

现在,Rect类位于&#34; ge&#34;的名称空间中。它是一个非常简单的类,实际上它是一个结构,我在调试这个问题时把它变成了一个类。总共16个字节,4个整数值用于制作矩形。

在调用&#34; push_back&#34;之前我打印了矢量的容量:

cout << m_Frames.capacity() << endl;

我得到了令人难以置信的大数字。在1亿的数量上,好像它试图分配所有可用的内存。对push_back的任何调用都会导致bad_alloc异常。如果你很好奇,Rect对象的大小是16个字节。

编辑:

值得注意的是,保留前的容量为0,之后的容量为10.然而,在代码的后面,它的数量是巨大的。

0 个答案:

没有答案