vector执行push_back操作异常
在调用vector push_back的时候,报错,代码如下:
class CTest
{
};
vector<CTest*> vecTest;
CTest* pT = NULL;
vecTest.push_back(pT); // 此处出错
// push_back函数调用时,出错的最终位置在:
_Myt& operator+=(difference_type _Off)
{ // increment by integer
_SCL_SECURE_VALIDATE(this->_Has_container());
_SCL_SECURE_VALIDATE_RANGE( // 调用该宏定义时出错
_Myptr + _Off <= ((_Myvec *)(this->_Getmycont()))->_Mylast &&
_Myptr + _Off >= ((_Myvec *)(this->_Getmycont()))->_Myfirst);
_Myptr += _Off;
return (*this);
}
从出错的地方来看,是由于push_back函数返回值时,发生越界,导致出错;但此处_Off = 0,_Myptr = vecTest.begin(),没有发生越界啊。请高人指点到底是什么原因导致这种情况的出现;
注: 该问题偶尔出现,不是每次必然出现;且调用vector.erase等操作时,也出现过类似错误,出错的位置在同一个地方:_SCL_SECURE_VALIDATE_RANGE 宏出错。