使用:
valgrind --leak-check=full -v --fullpath-after=. --num-callers=50 --track-origins=yes --leak-resolution=high offline
Valgrind 说:
==8914== Conditional jump or move depends on uninitialised value(s)
==8914== at 0x62E9ADD: QTextFormatCollection::indexForFormat(QTextFormat const&) (/var/tmp/qt-src/src/gui/text/qtextformat.cpp:3075)
==8914== by 0x6301D65: QTextDocumentPrivate::init() (/var/tmp/qt-src/src/gui/text/qtextdocument_p.cpp:228)
==8914== by 0x630350B: QTextDocumentPrivate::clear() (/var/tmp/qt-src/src/gui/text/qtextdocument_p.cpp:275)
==8914== by 0x62F41E7: QTextDocument::setHtml(QString const&) (/var/tmp/qt-src/src/gui/text/qtextdocument.cpp:1186)
==8914== by 0x62C123E: QTextControlPrivate::setContent(Qt::TextFormat, QString const&, QTextDocument*) (/var/tmp/qt-src/src/gui/text/qtextcontrol.cpp:481)
==8914== by 0x64F4C8E: QTextEditPrivate::init(QString const&) (/var/tmp/qt-src/src/gui/widgets/qtextedit.cpp:174)
==8914== by 0x64F5528: QTextEdit::QTextEdit(QString const&, QWidget*) (/var/tmp/qt-src/src/gui/widgets/qtextedit.cpp:625)
==8914== by 0x40E1B3: controlRThroughQt::controlRThroughQt() (in /home/anisha/.../offline)
==8914== by 0x40E933: main (in /home/anisha/.../offline)
==8914== Uninitialised value was created by a stack allocation
==8914== at 0x62E73B0: QTextFormatPrivate::recalcHash() const (/var/tmp/qt-src/src/gui/text/qtextformat.cpp:317)
==8914==
您认为哪些值在这里未初始化?
构造函数:
controlRThroughQt :: controlRThroughQt ()
{
/** Qt widget's interface which will be controlling the R's widget */
window = new QMainWindow ();
centralWidget = new QWidget (window);
refresh = new QPushButton ("Start R", window);
refresh->setFixedSize (55, 55);
connect (refresh, SIGNAL (clicked ()), this, SLOT (slotRefreshR ()));
zoomIn = new QPushButton ("Zoom\nin", window);
zoomIn->setFixedSize (55, 55);
connect (zoomIn, SIGNAL (clicked ()), this, SLOT (slotZoomInR ()));
zoomOut = new QPushButton ("Zoom\nout", window);
zoomOut->setFixedSize (55, 55);
connect (zoomOut, SIGNAL (clicked ()), this, SLOT (slotZoomOutR ()));
panLeft = new QPushButton ("Pan\nLeft", window);
panLeft->setFixedSize (55, 55);
connect (panLeft, SIGNAL (clicked ()), this, SLOT (slotPanLeftR ()));
panRight = new QPushButton ("Pan\nRight", window);
panRight->setFixedSize (55, 55);
connect (panRight, SIGNAL (clicked ()), this, SLOT (slotPanRightR ()));
panTop = new QPushButton ("Pan\nTop", window);
panTop->setFixedSize (55, 55);
connect (panTop, SIGNAL (clicked ()), this, SLOT (slotPanTopR ()));
panBottom = new QPushButton ("Pan\nBottom", window);
panBottom->setFixedSize (55, 55);
connect (panBottom, SIGNAL (clicked ()), this, SLOT (slotPanBottomR ()));
panBottomRight = new QPushButton ("Bottom\nRight", window);
panBottomRight->setFixedSize (55, 55);
connect (panBottomRight, SIGNAL (clicked ()), this, SLOT (slotPanBottomRightR ()));
panBottomLeft = new QPushButton ("Bottom\nLeft", window);
panBottomLeft->setFixedSize (55, 55);
connect (panBottomLeft, SIGNAL (clicked ()), this, SLOT (slotPanBottomLeftR ()));
panTopRight = new QPushButton ("Top\nRight", window);
panTopRight->setFixedSize (55, 55);
connect (panTopRight, SIGNAL (clicked ()), this, SLOT (slotPanTopRightR ()));
panTopLeft = new QPushButton ("Top\nLeft", window);
panTopLeft->setFixedSize (55, 55);
connect (panTopLeft, SIGNAL (clicked ()), this, SLOT (slotPanTopLeftR ()));
findInfo = new QPushButton ("Find\nInfo.", window);
findInfo->setFixedSize (55, 55);
connect (findInfo, SIGNAL (clicked ()), this, SLOT (slotFindInfoR ()));
textEdit = new QTextEdit ("Vehicle Info. will be shown here.", window);
textEdit->setReadOnly (true);
textEdit->setFixedSize (155, 555);
layout = new QGridLayout ();
centralWidget->setLayout (layout);
layout->addWidget (refresh, 0, 0);
layout->addWidget (zoomIn, 1, 0);
layout->addWidget (zoomOut, 1, 1);
layout->addWidget (panLeft, 2, 0);
layout->addWidget (panRight, 2, 1);
layout->addWidget (panTop, 3, 0);
layout->addWidget (panBottom, 3, 1);
layout->addWidget (panBottomRight, 4, 0);
layout->addWidget (panBottomLeft, 4, 1);
layout->addWidget (panTopRight, 5, 0);
layout->addWidget (panTopLeft, 5, 1);
layout->addWidget (findInfo, 6, 0);
layout->addWidget (textEdit, 7, 0);
window->setCentralWidget (centralWidget);
window->setWindowFlags (Qt::WindowStaysOnTopHint);
window->show ();
}
成员函数调用:
void controlRThroughQt :: slotRefreshR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (0, 0, 0); }
void controlRThroughQt :: slotPanLeftR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (1, 0, 0); }
void controlRThroughQt :: slotPanRightR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (2, 0, 0); }
void controlRThroughQt :: slotPanTopR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (3, 0, 0); }
void controlRThroughQt :: slotPanBottomR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (4, 0, 0); }
void controlRThroughQt :: slotPanTopLeftR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (5, 0, 0); }
void controlRThroughQt :: slotPanTopRightR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (6, 0, 0); }
void controlRThroughQt :: slotPanBottomLeftR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (7, 0, 0); }
void controlRThroughQt :: slotPanBottomRightR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (8, 0, 0); }
void controlRThroughQt :: slotZoomInR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (9, 0, 0); }
void controlRThroughQt :: slotZoomOutR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (10, 0, 0); }
void controlRThroughQt :: slotFindInfoR () { rdaTilesOnR :: loadNewTileAndPlotPointsOnRWidget (12, 0, 0); }
更新:
controlRThroughQt :: controlRThroughQt () :
window (new QMainWindow ()),
centralWidget (new QWidget (window)),
refresh (new QPushButton ("Start R", window)),
zoomIn (new QPushButton ("Zoom\nin", window)),
zoomOut (new QPushButton ("Zoom\nout", window)),
panLeft (new QPushButton ("Pan\nLeft", window)),
panRight (new QPushButton ("Pan\nRight", window)),
panTop (new QPushButton ("Pan\nTop", window)),
panBottom (new QPushButton ("Pan\nBottom", window)),
panBottomRight (new QPushButton ("Bottom\nRight", window)),
panBottomLeft (new QPushButton ("Bottom\nLeft", window)),
panTopRight (new QPushButton ("Top\nRight", window)),
panTopLeft (new QPushButton ("Top\nLeft", window)),
findInfo (new QPushButton ("Find\nInfo.", window)),
textEdit (new QTextEdit ("Vehicle Info.", window)),
layout (new QGridLayout ())
如上所示,我更新了我的代码,但错误QTextEdit
仍然存在。当我从 Qt GUI 中完全删除 QTextEdit 时,错误消失了。
请指导。