我有一个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”进行编译,它也不会崩溃。如果我调试所有项目的释放正确发生,它甚至会成功退出清除函数,但是如果在清除之后我确实“进入”它会再次进入清除函数并在调用函数“迭代器”时崩溃结尾()”
这是怎么回事?由于调试器和应用程序验证程序未能给我任何相关信息,我应该检查内存的哪一部分是否损坏?有没有人偶然发现过这个问题?