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
[13190] Re:Re:Re:메모리가 새요 ㅠㅠ 고수님들 도와주세요 ㅠㅠ
V6 [] 995 읽음    2001-11-28 13:06
윤성민 님이 쓰신 글 :
: V6 님이 쓰신 글 :
: : 윤성민 님이 쓰신 글 :
: : : TActiveForm으로 만든 ocx를 MFC single Dailog로 import해서 썻는데요 ㅠㅠ
: : : Visual C++ 에서 짜꾸 메모리가 샌다고 나오거든요
: : : 그래서 생성자하고 소멸자를 맞추어 줄려구 그러는데요 도무지 모가 몬지 모르겠어요
: : : 제가 new나 malloc을 이용해서 클래스나 객체를 생성하지도 않았는데요 그저
: : : 빌더 깔면 꽁짜로 깔려있는 VCL 컨트롤만 이용했거든요
: : : 왜 메모리가 새는지 아시는분 계시면 제말 가르처주세요
: :
: : 빌더의 Project 메뉴의 Option에서 CodeGuard탭에 가셔서
: :
: : CodeGuard Validation을 체크하시고 컴파일 해보세요.
: :
: : 메모리 누수 다 잡아줍니다. Full debug로 해 놓고 하세요.
: :
: : 그리고 View 메뉴의 Debug Windows 밑에 있는 Codeguard Log 여시구요.
: :
: : 쓸만합니다.

: 답변 감사 합니다. 그런데 Codeguard Log에서는 아무것도 안나오고요
: Event log에서만 메모리가 샌다고 나오는 거 같해요
: 이벤트 로그 파일을 올릴께요 메모리가 새는 위치와 이유를 알고 싶거든요
: ㅠㅠ


Event log로는 왜 새는지 알 수 없습니다.

메모리 누수는 new로 잡아 것을 해제하지 않은 생기는 경우가 많습니다.

Codeguard Log 창에 아무것도 나오지 않는 것은 오류가 없거나

오류를 범하는 코드가 실행되지 않았다는 의미입니다.

예를 들어 보죠

New Application 을 만들고 버튼을 하나 올려놓고 OnClick 이벤트를 이렇게 작성합니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char *cstr = new char;
}

그러고 Codeguard를 켜고 Codeguard Log창을 띄우고 실행해 보세요.

실행후 Button1을 한번만 클릭한 후 종료해 보세요.

CPU 창이 뜨면서 Codeguard Log 창에 기록이 될겁니다.

+ Resource leak 이라고 뜰겁니다.

+ 를 눌러서 하위 항목을 보면 + The object..어쩌구 저쩌구... created with new

고거 + 또 눌러보면 TForm1::Button1Click .... 이렇게 나옵니다.

그 항목을 더블클릭하면 소스편집창의 char *cstr = new char;로 이동됩니다.



직접해 보시면 아실겁니다.

그래서 님께서 작성하셨던 것에서 메모리를 해제해 주지 않은 것이 있다면

생성되는 부분이 먼저 실행되고 프로그램을 종료해야 Codeguard Log에 기록됩니다.

한번 해 보세요.

V6 였습니다.  즐프하세요.


+ -

관련 글 리스트
13167 Re:Re:메모리가 새요 ㅠㅠ 고수님들 도와주세요 ㅠㅠ 윤성민 810 2001/11/27
13190     Re:Re:Re:메모리가 새요 ㅠㅠ 고수님들 도와주세요 ㅠㅠ V6 995 2001/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.