2013-05-07 1 views
0

Qt의 Simple DOM Model Example에 메모리 누수가 있다고 생각합니다. 다음 코드는 QDomNodes를 추적하는 데 사용되는 래핑 된 DomItem 개체를 만드는 데 사용됩니다.Qt : 간단한 DOM 모델 예제 메모리 누수

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*>에 덮어 쓰는 것을 이전에 생성 된 래퍼를 방지 어떻게 표시되지 않습니다. 방법의 if (childItems.contains(i)) return childItems[i];

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

글쎄, 나는 어리 석다. :) – Mike