我正在使用以下愚蠢的代码:
std::vector<wxString> m_redoSteps;
...
m_redoSteps.clear();
当我使用Visual Studio 6或GCC进行编译时m_redoSteps.clear()工作正常,当我使用visual Studio 2010时,有一个断言“矢量迭代器不兼容”(导致发布版本崩溃)。
这里有什么问题吗?
-
编辑:再添加一行代码:
std::vector<wxString> m_redoSteps;
...
if (!m_redoSteps.empty())
{
// do something in case it is not empty - which isn't in my case
...
}
m_redoSteps.clear(); // first call leads to the assertion...
答案 0 :(得分:3)
安装visual studio 2010 sp1,请参阅此错误报告:http://connect.microsoft.com/VisualStudio/feedback/details/545013
更新(2015年4月14日):
错误描述是 545013:&#34; vector :: erase&#34;约束在调试版本中返回不兼容的迭代器。
原始链接http://connect.microsoft.com/VisualStudio/feedback/details/545013不可用,但原始错误的缓存位于http://web.archive.org/web/20140727031651/http://connect.microsoft.com/VisualStudio/feedback/details/545013
此错误已在Visual Studio SP 1中解决,如此处所述Description of Visual Studio 2010 Service Pack 1