【QT實踐記錄】QPointer 守護指針

QPointer除了封裝指針,對外表現的像普通指針一樣,還提供了守護功能。

作用:如下代碼,在delete後,QPointer指針內存在的實際指針,被自動置0了,從而避免了懸掛指針。以前一直以爲這個是隻能指針,實際上不一樣的,智能指針主要確保動態分配內存被恰當的釋放,避免內存泄漏,也可以防止懸掛指針。但是QPointer無法做到恰當釋放,QSharedPointer纔是的。

有一個全局的守護哈希表,用於存儲所有的QObejct對象被守護的QPointer指針。構造QPointer時添加到哈希表,QObject對象析構時,從哈希表中移除。

每個QObject對象的數據成員QObjectPrivate(繼承自QObjectData),都包含一個標記hasGuards,表明自己是否有守護指針存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章