Qt中delete的問題

2022-06-28 23:36:13 字數 1306 閱讀 3837

最近專案遇到了乙個bug,壓力測試ui總會崩潰,gdb除錯未果,跑到了庫函式,無從查起:

(gdb)bt

#0 0x4146b1e4 in qwidgetprivate::drawwidget(qpaintdevice*, qregion const&,qpoint const&, int, qpainter*, qwidgetbackingstore*) () from/qt/lib/libqt5widgets.so.5

#1 0x4146bb70 in qwidgetprivate::paintsiblingsrecursive(qpaintdevice*,qlistconst&, int, qregion const&, qpoint const&,int, qpainter*, qwidgetbackingstore*) ()

from /qt/lib/libqt5widgets.so.5

#2 0x4146b22c in qwidgetprivate::drawwidget(qpaintdevice*, qregion const&,qpoint const&, int, qpainter*, qwidgetbackingstore*) () from/qt/lib/libqt5widgets.so.5

#3 0x41443918 in qwidgetbackingstore::sync() () from /qt/lib/libqt5widgets.so.5

#4 0x41462c9c in qwidgetprivate::syncbackingstore() () from/qt/lib/libqt5widgets.so.5

#5 0x4146de64 in qwidget::event(qevent*) () from /qt/lib/libqt5widgets.so.5

#8 0x00922918 in ?? ()

#9 0x00922918 in ?? ()

backtracestopped: previous frame identical to this frame (corrupt stack?)

(gdb)

後來發現問題是qt中使用delete出錯,

if(p);

readoutdisplay::readoutdisplay(qwidget *parent, qstring type) :

qwidget(parent)

洩漏的原因是這裡在類中宣告的了乙個類物件指標,在成員函式中分配了空間,但是沒有在成員函式中釋放,解決的辦法是在析構函式中檢查釋放:

readoutdisplay::~readoutdisplay()

}

**:

Qt中delete的問題

最近專案遇到了乙個bug,壓力測試ui總會崩潰,gdb除錯未果,跑到了庫函式,無從查起 gdb bt 0 0x4146b1e4 in qwidgetprivate drawwidget qpaintdevice qregion const qpoint const int,qpainter qwid...

QT中什麼時候delete

在c 中學習過程中,我們都知道 qt作為c 的庫,顯然是不會違背c 的前述原則的。可是 注 本文暫不涉及智慧型指標 smart pointer 相關的東西,你可以考慮 qt 智慧型指標學習 一文 在qt中,以下情況下你new出的物件你可以不用 親自去delete 但你應該清楚delete在何處被qt...

從 Qt 的 delete 說開來

在c 中學習過程中,我們都知道 qt作為c 的庫,顯然是不會違背c 的前述原則的。可是 注 本文暫不涉及智慧型指標 smart pointer 相關的東西,你可以考慮 qt 智慧型指標學習 一文 在qt中,以下情況下你new出的物件你可以不用親自去delete 但你應該清楚delete在何處被qt呼...