Segmentation fault bei QList::isEmpty()
Verfasst: 3. April 2014 15:19
Hallo zusammen,
ich habe in meinem Programm das Problem, dass ich bei dem Aufruf dwer Funktion isEmpty bzw. size() eines QList-Objektes immer ein Segmentation fault (SIGSEGV) ausgelöst wird. Allerdings kann ich trotz mehrfachem Debugging keinen Grund hierfür finden, daher hoffe ich, dass mir hier jemand weiterhelfen kann. Hier ist erstmal mein Code:
Dabei geht es um das Objekt "pEdges". Der fehler wird in diesem Ausschnitt ausgelöst:
wpbei m_pGraph->getNodes eine Liste von SGraphNode-Objekten zurückliefert. Da ich mit dieser Liste genau so arbeite wie mit pEdges, kann ich mir den auftrtenden Fehler nicht erklären. Leider habe ich auch bei google nichts gefunden, das mir in dieser Hinsicht weiterhelfen kann.
Auch der Debugger gibt nicht allzu viele Informationen raus, sondern springt lediglich in qlist.h, Zeile 93
wobei es eventuell noch hilfreich seine könnte, dass der Debugger mir als Wert des Objektes p der Klasse QList (vom typ QListData) sehr kleine Werte (zwischen 0x00 und 0x20) anzeigt.
Ich hoffe, ihr könnt mir helfen.
Gruß
Niklas
ich habe in meinem Programm das Problem, dass ich bei dem Aufruf dwer Funktion isEmpty bzw. size() eines QList-Objektes immer ein Segmentation fault (SIGSEGV) ausgelöst wird. Allerdings kann ich trotz mehrfachem Debugging keinen Grund hierfür finden, daher hoffe ich, dass mir hier jemand weiterhelfen kann. Hier ist erstmal mein Code:
Code: Alles auswählen
struct SGraphNode
{
QList<SGraphEdge>* pEdges;
QString sName;
QString sDescription;
QPoint ptPosition;
// konstruktor
SGraphNode(QString _sName,
QString _sDescription,
QPoint _ptPosition) : sName(_sName),
sDescription(_sDescription),
ptPosition(_ptPosition)
{
pEdges = new QList<SGraphEdge>();
}
Code: Alles auswählen
if(!m_pGraph->getNodes()->at(i).pEdges->isEmpty())
{
for(int j=0; j<m_pGraph->getNodes()->at(i).pEdges->size();j++)
{
//if(!m_pGraph->getNodes()->at(i).pEdges->at(j).bDrawn)
{
pPainter->drawLine(m_pGraph->getNodes()->at(i).ptPosition,
m_pGraph->getNodes()->at(i).pEdges->at(j).pNeighbour->ptPosition);
}
}
}
Auch der Debugger gibt nicht allzu viele Informationen raus, sondern springt lediglich in qlist.h, Zeile 93
Code: Alles auswählen
inline bool isEmpty() const { return d->end == d->begin; }Ich hoffe, ihr könnt mir helfen.
Gruß
Niklas