簡體   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