Qt:简单DOM模型示例内存泄漏

时间:2013-05-07 21:30:58

标签: qt

我认为Qt中的Simple DOM Model Example有内存泄漏。以下代码用于创建用于跟踪QDomNodes的包装DomItem对象。

DomItem *DomItem::child(int i)
{
     if (childItems.contains(i))
         return childItems[i];  

     if (i >= 0 && i < domNode.childNodes().count()) {
         QDomNode childNode = domNode.childNodes().item(i);
         DomItem *childItem = new DomItem(childNode, i, this);
         childItems[i] = childItem;
         return childItem;
     }
     return 0;
}

我没有看到if条件如何实际阻止先前创建的包装器被覆盖在QHash<int,DomItem*>中。这是类定义:

class DomItem
{
public:
    DomItem(QDomNode &node, int row, DomItem *parent = 0);
    ~DomItem();
    DomItem *child(int i);
    DomItem *parent();
    QDomNode node() const;
    int row();

private:
    QDomNode domNode;
    QHash<int,DomItem*> childItems;
    DomItem *parentItem;
    int rowNumber;
};

1 个答案:

答案 0 :(得分:1)

方法的第一行if (childItems.contains(i)) return childItems[i];将阻止哈希中的项被覆盖。