연결된 목록 방법을 사용하여 표준 컨테이너 중 하나의 자체 버전을 빌드하려고합니다. 새 데이터를 얻을 때마다 새 노드를 만들어 컨테이너에 넣습니다. D' tor은 컨테이너가 파괴되었을 때 모든 노드를 파괴합니다.이상한 컨테이너 메모리 누수
이상한 일은 누수 검사 후 (valgrind 사용) 누수가있을 때마다 내가 첫 번째 데이터를 삽입한다는 것입니다.
Node<A, T> *newNode = new Node<A, T>(priority, object);
노드 클래스는 매우 기본적인 : 그것은이 라인에 저를 언급 유지
template<typename A, typename T>
typename container<A, T>::Iterator Queue<A, T>::insert(
const A& priority, const T& object) {
Iterator head = this->begin();
Iterator tail = this->begin();
this->findElementPlace(priority, head, tail);
Node<A, T> *newNode = new Node<A, T>(priority, object);
head.node->next = newNode;
newNode->next = (tail.node);
++head;
(this->Psize)++;
return head;
}
:
template<typename A, typename T>
class Node {
public:
Element<A, T> element;
Node* next;
Node() :
element(), next(NULL) {
}
Node(const A priority, const T data) :
element(priority, data), next(NULL) {
}
~Node() {
}
};
이 문제가되지 않는 경우 처음이 삽입 코드 데이터가 저장되면 D' tor가 처리하지만 특정 데이터가 삭제되지 않는다고 항상 말합니다. 처음부터 마지막까지 모든 요소를 지우는 지우기 기능을 사용합니다.
while ((from < to) && (from < this->end())) {
it.node->next = from.node->next;
Iterator temp = from;
++from;
delete temp.node;
(this->Psize)--;
}
가 "에서"포함 "을"반복자 "에서"반복자 사이의 모든 노드를 삭제
사람이이 문제를 해결하는 방법을 알고 않습니다 "를"포함하지 않음 :이 메인 루프인가?
어떤 방식 으로든 참조 카운팅 된 스마트 포인터를 사용하지 않는 이유. 'std :: shared_ptr'? – djikay
반복기는 어떻게 생겼습니까? –