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
[73982] Re:new, delete와 실제 메모리 반환
StarWagon [starwagon] 4393 읽음    2016-11-18 13:19
적어주신 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;

+ -

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