VC ++ 6.0矢量访问冲突崩溃。已知错误?

时间:2009-03-03 21:17:12

标签: c++ vc6

我正在尝试使用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,如果重要的话。

3 个答案:

答案 0 :(得分:4)

如果要跨外部库边界传递C ++对象,则必须确保所有库都使用相同的运行时库(特别是相同的堆分配器)。实际上,这意味着所有库都必须链接到MSVCRT的DLL版本。

答案 1 :(得分:1)

这几乎肯定是你的代码中的一个错误,而不是std :: vector。这个代码被太多的项目用来容易犯这样的错误。

可能发生的事情是ThnigList_变量已经以某种方式被破坏。是否直接访问和/或修改了底层数组?

答案 2 :(得分:0)

我同意Jared的说法可能在你的代码中, 从来没有,你应该确保你的stl libs是最新的。

dinkumware网站包含您需要的修补文件。

您应该更新才能安全