|
적어주신 new delete에는 문제가 없어 보이고,
new delete 사이 계산 과정에서의 누수 같네요.
jamjjari 님이 쓰신 글 :
: 안녕하세요
: 메모리 반환관련 질문이 있습니다.
: 현재 비쥬얼 스튜디오에 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;
|