C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[73979] new, delete와 실제 메모리 반환
jamjjari [] 3798 읽음    2016-11-17 22:11
안녕하세요
메모리 반환관련 질문이 있습니다.
현재 비쥬얼 스튜디오에 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;

+ -

관련 글 리스트
73979 new, delete와 실제 메모리 반환 jamjjari 3798 2016/11/17
73982     Re:new, delete와 실제 메모리 반환 StarWagon 3881 2016/11/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.