2

我有一个std::vector<Pointer>where 指针与 Boost 的侵入式 ptr 非常相似。存在一些差异,但该系统运行良好,因此几个月来,我怀疑它是否存在任何缺陷。该向量包含约 30 个接口的列表,每个元素都有一个相当复杂对象的实现。崩溃发生如下:

v.clear() // -> CRASH

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

while(v.size()) v.pop_back();
or
while(v.size()) v.erase(v.begin());

如果我使用标志“/RTCsu”和“/RTCc”进行编译,它也不会崩溃。如果我调试所有项目的释放正确发生,它甚至会成功退出清除函数,但是如果在清除之后我确实“进入”它会再次进入清除函数并在调用函数“迭代器”时崩溃结尾()”

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

4

1 回答 1

0

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

于 2012-12-27T18:29:30.310 回答