我的应用程序在我正在处理的应用程序的以下行崩溃:
struct PointIndex
{
int PointNr;
};
struct PointIndex PI = { 0 };
std::vector<PointIndex> MyVec;
MyVec.insert( MyVec.begin(), PI );
所示代码已大大简化(例如,MyVec
实际上是 C 数据结构的成员,直到最近还是 POD,但其中的一些指针已更改为向量以安抚 Coverity),但我正在工作的应用程序非常大而且现在,我会很感激一些关于可能出错的提示。
Visual Studio 2010 将此显示为调用堆栈:
MyAppl.dll!std::_Vector_const_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > >::operator+=(int _Off=-1) Line 157 + 0x15 bytes C++
MyAppl.dll!std::_Vector_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > >::operator+=(int _Off=-1) Line 359 C++
MyAppl.dll!std::_Vector_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > >::operator-=(int _Off=1) Line 371 C++
MyAppl.dll!std::_Vector_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > >::operator-(int _Off=1) Line 376 + 0xc bytes C++
MyAppl.dll!std::vector<PointIndex,std::allocator<PointIndex> >::emplace<PointIndex &>(std::_Vector_const_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > > _Where={PointNr=??? }, PointIndex & _Val={...}) Line 689 + 0x4a bytes C++
MyAppl.dll!std::vector<PointIndex,std::allocator<PointIndex> >::insert<PointIndex &>(std::_Vector_const_iterator<std::_Vector_val<PointIndex,std::allocator<PointIndex> > > _Where={PointNr=??? }, PointIndex & _Val={...}) Line 675 + 0x3b bytes C++
崩溃时向量为空,但据我所知,begin
应该与end
空向量相同,并且insert
迭代end
器与push_back
.
我四处寻找遇到类似问题的任何人,我能找到的最接近的是c++ std::vector.insert 在调试时崩溃但在发布时有效,我检查了整个解决方案的调用memset
但没有找到任何相关的到这个图书馆。
非常感谢任何/所有见解。