내가 사용하고 기본 데이터 구조는 다음과 같습니다메모리 할당은
map<int, Cell> struct Cell{ char c; Cell*next; };
는 사실상 데이터 구조는 연결리스트에 int를 매핑합니다. 맵 (이 경우 해시 맵으로 구현 됨)은 목록에서 값을 찾는 것이 일정한 시간에 실행되도록합니다. Linked List는 삽입 및 삭제가 일정한 시간에 실행되도록합니다. 각 처리의 반복에서 내가 좋아하는 뭔가를하고있는 중이 야 : 목록 내가지도의 요소 셀을 넣어 내장되면
Cell *cellPointer1 = new Cell;
// 프로세스 세포를
목록
를 연결 구축 할 수 있습니다. 구조는 잘 작동했고 프로그램 이후에는 메모리를 할당 해제합니다. 목록의 각 셀에 대해.delete cellPointer1
하지만 내 프로그램이 끝나면 메모리 누수가 발생했습니다! 는 메모리 누수를 테스트하기 위해 내가 사용 : 나는 어딘가에 길을 따라 내가지도에서 세포를 넣어하고 있다는 사실이 나를 올바르게 메모리 할당을 해제하는 것을 허용하지 않는 것을 생각하고
#include <stdlib.h>
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
_CrtDumpMemoryLeaks();
. 누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
우선 무엇을 말합니까? 디버거는 무엇을 말합니까? 그러면 : 셀은 목록입니다. 단순히 모든 노드에서 "삭제"를 호출 할 수 없습니다. 목록을 삭제해야합니다. 그렇지 않으면 메모리 누수가 있습니다. –
어떻게지도에 요소를 넣으시겠습니까? 'theMap.insert (std :: make_pair (key, * pCell) '는 메모리 누출을 일으킬 것입니다. – BruceAdi