2011-05-27 144 views
1

我從QGraphicsScene繼承了我的場景。我在這個場景中添加了很多項目(QGraphicslineItem,QGraphicsItem,QGraphicsTextItem)。每當我嘗試QGraphicsSceneClear方法它崩潰在發佈模式。它在調試模式下工作正常。有些項目有子項目和/或有其他項目的指針,所以當我刪除它們時,我在析構函數中處理它們(刪除指向其他項目的指針等)。我猜其他項目的指針使它崩潰,但我不明白爲什麼它崩潰只在發佈模式。QGraphicsScene :: clear()方法僅在發佈模式下崩潰

釋放模式下的調用堆棧沒有用,但它確實在控制檯上表示訪問衝突。

回答

1

你的問題是你的一些項目正在刪除同一場景中的其他項目。調用clear()時,您無法控制(不是直接)刪除項目的順序。假設你有項目A,B和C. C維護一個指向A和B的指針。當clear()被調用時,A和B可能在C的析構函數被調用時已經被移除和刪除。

至於只發生在發佈模式下的崩潰,刪除順序可能取決於編譯器優化的級別。處理懸掛指針時這很常見。

相關問題