最近專案遇到了乙個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呼...