-1

我正在使用以下愚蠢的代码:

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...
4

1 回答 1

3

安装 Visual Studio 2010 sp1,请参阅此错误报告:http ://connect.microsoft.com/VisualStudio/feedback/details/545013

更新(2015 年 4 月 14 日):

错误描述为545013:“vector::erase”约束在调试版本中返回不兼容的迭代器。

原始链接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 中解决,如此处所述 Visual Studio 2010 Service Pack 1 的描述

于 2012-11-26T10:05:29.873 回答