首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用std::vector::clear时c++崩溃

调用std::vector::clear时c++崩溃
EN

Stack Overflow用户
提问于 2012-11-28 20:54:23
回答 1查看 2.3K关注 0票数 2

我有一个std::vector<Pointer>,它的指针非常类似于Boost的侵入式ptr。有一些不同之处,但这个系统运行良好,所以几个月来,我怀疑它是否有任何缺陷。向量包含大约30个接口的列表,每个元素都有一个相当复杂的对象的实现。崩溃发生的原因如下:

代码语言:javascript
复制
v.clear() // -> CRASH

奇怪的是,如果以任何其他方式清除向量,则不会发生崩溃;例如,以下代码不会崩溃。

代码语言:javascript
复制
while(v.size()) v.pop_back();
or
while(v.size()) v.erase(v.begin());

如果我使用"/RTCsu“和"/RTCc”标志进行编译,它也不会崩溃。如果我调试所有项的释放都正确发生,它甚至会成功退出clear函数,但是如果在clear之后我确实“单步执行”了,它将再次进入clear函数,并在调用函数"iterator end()“时崩溃。

这是怎么发生的?由于调试器和应用程序验证器未能提供任何相关信息,我应该检查内存的哪一部分有损坏?以前有没有人偶然发现过这个问题?

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 02:29:30

智能指针是否有复制构造函数和赋值运算符?STL容器存储包含项的副本,如果您的智能指针出现问题,可能会导致您所描述的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13605543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档