我的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.然而,在代码的后面,它的数量是巨大的。