繁体   English   中英

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

[英]c++ crash when calling std::vector::clear

我有一个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”进行编译,它也不会崩溃。 如果我调试所有项目的发布正确发生,它甚至会成功退出清除功能,但是如果在清除之后我确实“进入”,则它会再次进入清除功能,并在调用函数“迭代器”时崩溃结束()”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM