我有一个使用C ++库的C#应用程序。在库的一个功能中,我正在构建一个类对象的向量。但是,当我使用push_back()
将对象添加到向量时,我收到bad_alloc
错误。任何人都可以解释为什么会发生这种情况吗?
我的部分代码如下:
vector< EVector > CalibrationHelper::calcCalibrationPoints( ..... )
{
std::vector< EVector > vertices;
if(h > 1 && v > 1)
{
....
if (h >= 2 && v >= 2)
{
for (int x = 0; x < h; x++)
{
for (int y = 0; y < v; y++)
{
EVector p;
p.x = x * ( bW + marginX ) + marginXLeft;
p.y = y * ( bH + marginY ) + marginy;
p.x += shiftX;
p.y += shiftY;
try{
vertices.push_back(p);
}catch(std::bad_alloc& ba){
std::cerr << "bad_alloc caught: " << ba.what() << '\n';
}
}
}
}
}
return vertices;
}
在第一个push_back()
之后,向量vertices
的大小会在应该增加一个时变为非常大的数字。