【发布时间】:2014-02-05 12:27:10
【问题描述】:
我正在使用向量/迭代器在不同的类中执行方法,这在调试和我们使用相同方法的其他地方工作得很好。但是由于某种原因,当我在发行版中运行此代码时,出现以下错误:
FOO.exe 中 0x011d2928 处未处理的异常:0xC0000005:访问冲突。
std::vector<AbstractClass*> vectorClasses;
vectorClasses.push_back(&SomeClass1());
vectorClasses.push_back(&SomeClass2());
vectorClasses.push_back(&SomeClass3());
CString result;
std::vector<AbstractClass*>::iterator it
for(it = vectorClasses.begin() ; it != vectorClasses.end() ; it++)
{
result = (*it)->DoSomething(s1, s2);
if(!IsBlank(result))
{
//Do something
break;
}
}
为什么会这样?错误与使用向量/迭代器有关吗? 让我想到它与迭代器有关的是,当我调试它(发布)时,Visual Studio 完全跳过了我声明我的迭代器的那一行(这在调试中不会发生)。
当我调试发布版本时,尝试执行该行时出现错误:
result = (*it)->DoSomething(s1, s2);
【问题讨论】:
-
s2在哪里定义?SomeClass1的构造函数发生了什么?向我们展示代码。 -
vectorClasses.push_back(&SomeClass1());添加临时地址... -
错过包含它们应该只是两个不同的字符串。
标签: c++ vector iterator release