Hello!
I have the permanent segfault when I try to manually delete pointers from my hash table.
Here is some code.
This is the class that I use as hash table value:
{
Q_OBJECT
public:
QHash <QString, QString> pattern;
};
class CMarkupPair: public QObject
{
Q_OBJECT
public:
QHash <QString, QString> pattern;
};
To copy to clipboard, switch view to plain text mode
And thats my table:
QHash <QString, CMarkupPair
*> hs_markup;
QHash <QString, CMarkupPair*> hs_markup;
To copy to clipboard, switch view to plain text mode
I tried many ways to delete values from here. For example:
QList<CMarkupPair *> l = hs_markup.values();
foreach (CMarkupPair *p, l)
delete p;
QList<CMarkupPair *> l = hs_markup.values();
foreach (CMarkupPair *p, l)
delete p;
To copy to clipboard, switch view to plain text mode
Or, even worse:
QList <QString> hs_markup_keys
= hs_markup.
keys();
foreach
(QString key, hs_markup_keys
) {
CMarkupPair *p = hs_markup.take (key);
delete p;
}
QList <QString> hs_markup_keys = hs_markup.keys();
foreach (QString key, hs_markup_keys)
{
CMarkupPair *p = hs_markup.take (key);
delete p;
}
To copy to clipboard, switch view to plain text mode
And when I try to "delete p", I have the segfault. My "p" is not NULL, it's ok pointer. Please help
Bookmarks