뽀뽀중 님이 쓰신 글 :
: 안녕 하세요.
:
: 많은 양의 계산결과를 vector 와 구조체를 조합하여 메모리에 저장하는 방법을 사용하고 있습니다.
: new 같은 동적할당은 전혀 하지 않았습니다.
:
: 재계산을 할 경우에는 기존 vector 에 저장된 값을 초기화 하고 다시 입력을 합니다.
: 이렇게 하면, 메모리 사용량이 증가를 할수가 없는데, 윈도우작업관리자로 보면 메모리사용량이 증가 하고 있습니다.
:
: 이 부분을 보완해야 할것 같은데, 어느 vector 에서 사용량이 증가하는 지 확인 하는 방법이 있나요?
:
:
: 저장할 구조체
:
: struct TNE_RainDistCal { // 1차반복
: AnsiString AsRainDistName; // 강우분포 이름
: AnsiString AsRainDistSimbol; // 강우분포 기호
:
: struct FreqRainDist FreqRainDistData;
: vector<FreqRainDist>veFreqRainDist;
:
: TNE_RainDistCal() {
: Clear();
: }
:
: void Clear() {
: AsRainDistName = "";
: AsRainDistSimbol = "";
:
: FreqRainDistData.Clear();
: veFreqRainDist.clear();
:
: ZeroMemory(this, sizeof(*this));
: }
: };
:
: extern TNE_RainDistCal TNE_RainDistCalData;
: extern vector<TNE_RainDistCal>veRainDistCalResult;
:
: 이런식으로 구조체를 정하고,
: 초기화는 TNE_RainDistCalData.Clear();
: veRainDistCalResult.clear();
:
: 이런식으로 하였습니다.
:
답변:
vector도 잘못 사용하고 있고...
전체 소스코드 구조를 보지 않고선 메모리 누수의 원인을 판단할 수 없어요.
wdmdrv@outlook.kr 로 프로젝트 전체소스 압축해서 보내보세요.
버그를 진단하는 데에 어느 정도의 비용이 발생할 수도...
|