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
[49387] Re:Re:감사합니다. (__) 꾸뻑...조금씩 해결의 기미가 보이고 있습니다. (냉무)
또아리 [] 1130 읽음    2007-05-28 09:41
강재호.만해 님이 쓰신 글 :
: 또아리 님이 쓰신 글 :
: : 작업관리자에 메모리 사용량이 계속 증가해서 리소스 부족 에러가 발생하는데...메모리 누수가 어디서 이루어 지는지 모르겠습니다...이리저리 포럼에서 뒤져서..memproof라는 자료실에 프로그램으로 검사해보라는데...어떻게 사용하나요? 몇시간째 코딩만 쳐다보고 있는데 ...잘 보이지 않네요... 해결을 못하고 있습니다. ㅡㅜ;
:
: 안녕하세요 만해입니다.
:
: 저도 이전에 겪었던일을 겪고 계시네요
:
: 그런데 전 아직도 겪고 있어서 ㅋ~
: 젤 먼저 살펴 봐야 할것은
:
: new랑 delete랑 숫자가 맞는지 그리고 쌍이 잘 이루어져 있는지 부터 확인 해보세요.
:
: 그 다음 방법은 new나 Delete 되는 부분에서 전부다 카운터를 시키는 방법입니다.
:
: 전역 변수 NewCount랑, DeleteCount 두가지변수를 만들어서
:
: new에 NewCount++ 시키고, delete에 DeleteCount 시켜서 프로그램이 종료된후에
:
: 두 카운터가 같은가 비교 하는 방법이 제일 무식히지만 좀 확실한 방법이고요,
:
: 좀더 좋은 방법은 CodeGuard옵션을 켜 놓고 빌더올 하신 다음에 종료 시켜 보세요
:
: 코드 가드가 new로 생성 했는데 안 지운것, Delete 했는데 또 지우는것들을 잡아내서 보여줍니다.
:
: 단 Full Debug로 컴파일 해야 합니다.
:
: 그외로는 혹시나 해서 적는데요
:
: TStringList* stl_list = new TStringList;
: for ( int i = 0 ; i < 100 ; i ++ )
:   stl_list->Add("asdasd");
: delete stl_list; <- 여기서 누수 생깁니다.
: TStringList에서 Add를 하게 되면 일정 공간의 크기 이상의 데이타를 요구하게 되면
:
: 자동으로 메모리 재 할당이 일어 나게 되는데요
:
: delete시에는재 할당된 내용까지 잡아서 지우진 않습니다.
:
: 이걸 해결 하실려면
:
: TStringList* stl_list = new TStringList;
: for ( int i = 0 ; i < 100 ; i ++ )
:   stl_list->Add("asdasd");
: stl_list->Clear(); <- 이렇게 명시적으로 Clear() 메소드를 호출해야 재할당된 부분까지 지워집니다.
: delete stl_list;

+ -

관련 글 리스트
49358 작업관리자에 메모리 사용량.. 또아리 1538 2007/05/25
49363     Re:작업관리자에 메모리 사용량.. 강재호.만해 1829 2007/05/25
49387         Re:Re:감사합니다. (__) 꾸뻑...조금씩 해결의 기미가 보이고 있습니다. (냉무) 또아리 1130 2007/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.