我正在使用Poco C++庫並導致奇怪的問題。 Poco使用自己的共享指針類SharedPtr
進行內部指針操作。在我的情況下,靜態對象Poco::SSLManager
擁有SharedPtr
證書處理程序對象的成員。當程序運行結束時,靜態對象被刪除,我發現分段錯誤。 使用GDB調試器我看到核心轉儲並不明白問題。在刪除SharedPtr
對象(簡單操作:delete pObj
)時發生Seg故障,但對象具有有效地址,例如 - 0x8fcbed8
。C++刪除有效地址的指針
爲什麼刪除指向有效地址的指針會導致分段錯誤?
可能是因爲對象在應用程序中創建應用程序副本並破壞主要?
在刪除檢查空指針的對象指針之前以及刪除操作設置爲空之後。 – Reddy
SharedPtr通常具有'ptr-> Release()'函數。檢查一下 – Gasim
@Reddy:在調用'delete'之前不要檢查'null',因爲它被定義爲對'null'指針不做任何事情。 – Puppy