我正在尝试使用std :: vector<> :: const_iterator并且我遇到了“访问冲突”崩溃。看起来std :: vector代码在使用自己的内部First_
和Last_
指针时崩溃了。据推测这是一个已知的错误。我希望有人能指出我正确的解决方法。从外部库中调用崩溃函数可能是相关的吗?
const Thing const* AClass::findThing (const std::string& label) const
{
//ThingList_.begin() blows up at run time. Compiles fine.
for (std::vector<Thing*>::const_iterator it = ThingList_.begin(); it != ThingList_.end(); ++it) {
//Irrelevant.
}
return 0;
}
简单地呼叫ThingList_.size()
也会崩溃。
这是sp6,如果重要的话。
答案 0 :(得分:4)
如果要跨外部库边界传递C ++对象,则必须确保所有库都使用相同的运行时库(特别是相同的堆分配器)。实际上,这意味着所有库都必须链接到MSVCRT的DLL版本。
答案 1 :(得分:1)
这几乎肯定是你的代码中的一个错误,而不是std :: vector。这个代码被太多的项目用来容易犯这样的错误。
可能发生的事情是ThnigList_变量已经以某种方式被破坏。是否直接访问和/或修改了底层数组?
答案 2 :(得分:0)