最近發現寫的程式,結束後會出現異常關閉,了解下qt的析構機制
c++ 誰new的誰delete是最基本的規範
qt則幫忙封裝好了析構,一直認為qt隨便new 析構自己解決,現在看來不是
qt只有qobject才會析構,其他的 比如最常見的qpixmap就不會自己析構需要手動析構
所以qt類下new了之後析構方法
繼承qobject的 不用管或者
deletelater
沒有繼承qobject的
delete
判斷是否存在的
if
(extrach_)
執行緒
if
(thread_extrach_-
>
isrunning()
)delete thread_extrach_;
thread_extrach_ = nullptr;
虛析構函式和析構函式中的虛機制
虛析構函式 虛析構函式是為了解決基類指標指向派生類物件,並用基類指標刪除派生類物件時能夠完全釋放記憶體。class a1 class a2 class b1 public a1 class b2 public a2 int main 一般來說,如果類中不包含虛函式,就表示這個類不作為基類使用。如果宣...
虛析構 純虛析構
析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。從高到低依次析構 因為在c 中,當乙個派生類物件通過使用乙個基類指標進行刪除 b a a a new b delete a 而這個基類有乙個非虛的析構函式,則結果是未定義的...
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...