안녕하세요
메모리 반환관련 질문이 있습니다.
현재 비쥬얼 스튜디오에 qt를 연동해서
프로그램을 구성중인데
3분 간격으로 데이터를 받아서 계산을 하는 부분이 있습니다.
계산 중에 데이터를 다루기 위해 2,3차원 동적 할당을 사용하였습니다.
그 중 3차원 동적할당의 크기는 120x120x100000
이라 상당한 용량을 차지합니다.
그래서 계산이 끝나면 delete로 삭제를 하였는데
실제 프로그램을 실행하고 작업관리자에서 해당 프로세서의
메모리사용량을 보면 매 시간간격마다 할당되어 사용 메모리양은
커지는데 계산이 끝나더라도 delete로 인한 메모리 반환은 안되군요.
디버그모드로 실제 delete구문을 지날때도 해당 프로세스에서의 메모리가 줄어들지는 않더군요.
그래서 시간이 흐를수록 메모리 사용량은 계속 커져 100%까지 차지하고 있습니다.
원래 new로 할당한후 delete를 하면 할당된 메모리만큼 사용 메모리가
줄어야되는거 아닌가요?
제가 잘못 이해한것인지 다른 방법이 있는지 알고싶습니다.
감사합니다.
Ps) 3차원 형식이라 new와 delete둘다 for문을 두번쓰고 new [] delete []의 형식으로 다루었습니다.
int nSensor = 120;
int fs = 100000;
float ***r = new float**[nSensor]
for (int i=0;i<nSensor;i++) {
r[i] = new float*[nSensor];
for (int j=0;j<nSensor;j++) {
r[i][j]=new float[fs];
}
}
....
for (int i=0;i<nSensor;i++) {
for (int j=0;j<nSensor;j++) {
delete[] r[i][j];
}
delete[] r[i];
}
delete[] r;
|