我有一个std::vector<Pointer>,它的指针非常类似于Boost的侵入式ptr。有一些不同之处,但这个系统运行良好,所以几个月来,我怀疑它是否有任何缺陷。向量包含大约30个接口的列表,每个元素都有一个相当复杂的对象的实现。崩溃发生的原因如下:
v.clear() // -> CRASH奇怪的是,如果以任何其他方式清除向量,则不会发生崩溃;例如,以下代码不会崩溃。
while(v.size()) v.pop_back();
or
while(v.size()) v.erase(v.begin());如果我使用"/RTCsu“和"/RTCc”标志进行编译,它也不会崩溃。如果我调试所有项的释放都正确发生,它甚至会成功退出clear函数,但是如果在clear之后我确实“单步执行”了,它将再次进入clear函数,并在调用函数"iterator end()“时崩溃。
这是怎么发生的?由于调试器和应用程序验证器未能提供任何相关信息,我应该检查内存的哪一部分有损坏?以前有没有人偶然发现过这个问题?
发布于 2012-12-28 02:29:30
智能指针是否有复制构造函数和赋值运算符?STL容器存储包含项的副本,如果您的智能指针出现问题,可能会导致您所描述的问题。
https://stackoverflow.com/questions/13605543
复制相似问题