1

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

4

3 回答 3

4

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

于 2009-03-03T21:20:12.010 回答
1

这几乎可以肯定是您的代码中的错误,而不是 std::vector。这个代码被太多的项目使用了,以至于没有这么容易重现的错误。

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

于 2009-03-03T21:20:31.103 回答
0

我同意 Jared 的观点,它可能在你的代码中,而且永远不会少,你应该确保你的 stl 库是最新的。

dinkumware站点有你需要的补丁文件。

为了安全起见,您应该更新

于 2009-03-03T21:30:56.897 回答