디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

DX 2D비행슈팅강좌 14. 메모리릭 찾기

Vita500갤로그로 이동합니다. 2009.07.15 01:45:30
조회 1078 추천 0 댓글 5


===== DX 2D비행슈팅강좌 ======
===== 14. 메모리릭 찾기 =====
프로그램개발을 시작할때, 메모리릭을 검출할수있는
상태로 만들어 두는것이 좋다.
그중 여기에서는 Visual Leak Detector를 사용한다.
무료이고, VS2008에서 WinApi나 MFC환경에서
잘동작한다.
XP32환경에서는 1.9h(Beta), 1.0은 잘동작했지만,
Vista64환경에서는 1.0만 잘동작하였다.
XP32환경이라면, 1.9h를 권한다.




#XP32비트 사용자
1. 1.9h 다운로드
2. 1.9h 설치
3. 1.9h 라이브러리 등록

#XP32비트, Vista64비트등 모든 사용자
4. 1.0 다운로드
5. 1.0 압축풀기
6. 1.0 라이브러리 등록

#공통
7. 영문경로로 옮기기
8. 코드에 포함시키기
9. 메모리릭 찾기

#슈팅게임에서의 메모리해제.
10. 이미지정보해제
11. Character메모리 해제
12. 현실적인 제안








#XP32비트 사용자

1. 1.9h 다운로드
http://dmoulding.googlepages.com/vld-1.9h-setup.exe



2. 1.9h 설치
Next, Next, Next



3. 1.9h 라이브러리 등록
도구:옵션프로젝트 및 솔루션:VC++ 디렉터리:다음 파일의 디렉터리 표시

포함파일에 C:\\Program Files\\Visual Leak Detector\\include
라이브러리 파일에 C:\\Program Files\\Visual Leak Detector\\lib
를 등록하고 확인을 누른다.



#XP32비트, Vista64비트등 모든 사용자

4. 1.0 다운로드
http://dmoulding.googlepages.com/vld-10.zip



5. 1.0 압축풀기
C:\\Program Files\\Visual Leak Detector에 압축을 푼다.



6. 1.0 라이브러리 등록
도구:옵션프로젝트 및 솔루션:VC++ 디렉터리:다음 파일의 디렉터리 표시

포함파일에 C:\\Program Files\\Visual Leak Detector
라이브러리 파일에 C:\\Program Files\\Visual Leak Detector
를 등록하고 확인을 누른다.


#공통

7. 영문경로로 옮기기
프로그램소스경로에 한글이 포함되어있으면, 
메모리릭이 난 파일을 표시하지 못한다.
경로를 영문으로 수정하던지, 옮긴다.



8. 코드에 포함시키기
stdafx.h파일의 가장 하단에 #include "vld.h"를 넣는다.
다른것을 추가시키더라도, #include "vld.h"위에 위에 놓아야 한다.




9. 메모리릭 찾기
F5를 누르고, 프로그램을 종료하면, 출력창에 메모리릭을 보여준다.
그것을 클릭하면, 메모리릭이 발생한 지점으로 이동해준다.
그리고, 정상적으로 해제해주는 코드를 넣는다.
만약, 메모리릭이 일어났다고 나오지만, 릭이 일어난지점을
표시해주지 못할경우 dbghelp.dll파일을 디버그의 실행파일이 있는곳에 둔다.




#슈팅게임에서의 메모리해제.
10. 이미지정보해제
VOID Character::Release(VOID)
{
        INT iAni_size = _vImages.size();
        INT iImage_size = 0;

        for (INT i=0; i<iAni_size; ++i)
        {
                iImage_size = _vImages[i].size();
                for (INT k=0; k<iImage_size; ++k)
                {
                        delete _vImages[i][k];
                }
        }

}

슈팅게임에서 사용된 리소스는 모두 해제하지 않아서 메모리릭 발생을 보여준다.
Release함수에 메모리에서 해제해주는 코드를 넣는다.





11. Character메모리 해제
_Bullet_texture = BulletImage.Texture;
_Enemy_texture = EnemyImage->Texture;
_Player_texture = PlayerImage.Texture;


for (INT i=0; i<100; ++i)
{
        _Bullet[i].Release();
}
if (_Bullet_texture)
        _Bullet_texture->Release();        


_Enemy.Release();
if (_Enemy_texture)
        _Enemy_texture->Release();

_Player.Release();
if (_Player_texture)
        _Player_texture->Release();


Character의 Release를 호출해서 메모리를 해제하고
텍스쳐는 공유해서 사용하므로, 텍스쳐를 읽을때 미리 받아놓았다가,
Character외부에서 반환한다.



12. 현실적인 제안
Visual Leak Detector를 사용하면 디버그모드가 많이 느려진다.
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
사용시에는, 이것만 켜놓고, 메모리릭발생이 뜨면, 그때 Visual Leak Detector를 활성화한다.

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 비난 여론에도 뻔뻔하게 잘 살 것 같은 스타는? 운영자 24/06/03 - -
150985 bgm 갤러리의 위엄 ★ .jpg ㅇㄹ(59.19) 09.10.05 74 0
150983 다이어트 성공이라능... [3] 아주아슬갤로그로 이동합니다. 09.10.05 62 0
150982 지식인이나 프갤이나 질문글의 공통점..숙제 도와주세요.. [5] 태연여신님갤로그로 이동합니다. 09.10.05 85 0
150981 취업에 있어서 가장 우선적으로 따져야 하는 것... [9] 임베디드(112.150) 09.10.05 202 0
150979 용자중에 혹시 (61.33) 09.10.05 56 0
150978 형들 저좀 도와주셈 C언어 [20] C언어 개초보(218.38) 09.10.05 144 0
150977 적절한 타이밍에 타루여신 찬양 [2] 유리한갤로그로 이동합니다. 09.10.05 67 0
150976 리눅스에서 접속한 유저 정보 얻는 방법이 뭐가있을까요 [7] 위디안(210.107) 09.10.05 132 0
150975 아니 이런 언어가 있다니 루비 [5] 성대아싸(115.145) 09.10.05 184 0
150974 횽들 손가락 조심해 [7] 프리조지앙(112.149) 09.10.05 111 0
150973 고수님들 방금 글 쓰다가 글 다 날렸는데 복구 방법이 있을까요? [9] 123123123(218.154) 09.10.05 69 0
150972 키보드 너무쳐서 팔이 아프네 [4] 뽕이♥갤로그로 이동합니다. 09.10.05 73 0
150971 머큐리메일 서버로 메일 보내고받고 하는데 일부 사이트에서 안오네. 왜.. 클라리네이갤로그로 이동합니다. 09.10.05 45 0
150970 프갤러들의 건강을 위해서 한 자 적는다. [3] 한방플머(121.139) 09.10.05 100 0
150968 프갤 횽들은 프로그래밍할때 뭐써? [6] 고자라니(59.3) 09.10.05 128 0
150967 오늘의 질문... [3] 물속의다이아갤로그로 이동합니다. 09.10.05 60 0
150966 윽... 새벽에 하드 2TB 잘못 올라온거... [4] 대머리.갤로그로 이동합니다. 09.10.05 138 0
150965 url rewrite 웹호스팅에서 사용가능한가요? [1] ㅇㄹ(59.19) 09.10.05 58 0
150964 방금 나는 2명을 죽였다. [7] JuEUS-U갤로그로 이동합니다. 09.10.05 218 0
150963 커널vDK 횽은 봅니다. [1] clique갤로그로 이동합니다. 09.10.05 52 0
150962 c언어 배열 질문좀... [22] 어려워요(121.132) 09.10.05 129 0
150960 투명 인간 생성 가능 하나요? [5] Vita500갤로그로 이동합니다. 09.10.05 99 0
150959 투명 디렉토리 생성 가능 하나요? [4] ㅇㄹ(59.19) 09.10.05 74 0
150958 나랑 me2day 친구하자. [4] Pupustory갤로그로 이동합니다. 09.10.05 69 0
150957 신문을 봅시다 [4] 유리한갤로그로 이동합니다. 09.10.05 92 0
150956 c언어인데 형들좀 봐줘ㅠㅠ [1] 피자맛우유12(210.110) 09.10.05 74 0
150955 [비키니] 광고소환 도전 [1] ㅁㅁ(59.6) 09.10.05 48 0
150954 [팬티] 광고소환스킬 되나 [1] ㅁㅁ(59.6) 09.10.05 59 0
150953 전에는 안그랬는데.... [3] DMW(220.68) 09.10.05 68 0
150952 cafe24웹로그 서비스 괜찮네.... [2] Vita500갤로그로 이동합니다. 09.10.05 71 0
150951 아시 미장원 아줌마 [4] 군대지원(222.101) 09.10.05 87 0
150950 커널vDK 횽이 올린 문구 번역문을 번역해줘 [6] 숙신갤로그로 이동합니다. 09.10.05 89 0
150949 망할.. -ㅅ- 유해사이트 차단서비스.. [5] 혼아갤로그로 이동합니다. 09.10.05 99 0
150946 플밍갤 형들! KGC시간표때문에... 도와주세요! [2] 대머리.갤로그로 이동합니다. 09.10.05 47 0
150945 이거슨 리플렉션 [4] 유리한갤로그로 이동합니다. 09.10.05 96 0
150944 치마만 두르면 헤벌레.. 하는 프겔러들 조심하라능... [5] rntjr갤로그로 이동합니다. 09.10.05 185 0
150943 글 읽기위해 클릭하면 옆에 뜨는 광고 적절한가? [4] rntjr갤로그로 이동합니다. 09.10.05 67 0
150941 형들 c++에서 이게 무슨 문법 인가요? [7] 방사능고양이갤로그로 이동합니다. 09.10.05 113 0
150938 아옹 잘잤다. [2] clique갤로그로 이동합니다. 09.10.05 62 0
150936 안녕하세요 [4] 이게티오피야갤로그로 이동합니다. 09.10.05 84 0
150935 램이 .. 제조회사에 따라 특성타는게 진짜있나보다. [42] Pupustory갤로그로 이동합니다. 09.10.05 258 0
150934 카페24 서비스를 보면서 생각이 나는건데 말야? [27] Vita500갤로그로 이동합니다. 09.10.05 192 0
150933 내 아는애가 어디 학원 정보보안전문가 과정 1년에 800내고 듣는다던데 [6] VB어려워(59.6) 09.10.05 150 0
150932 대학교 전공자인데 학원을 준비하는 분들께... [2] 물속의다이아갤로그로 이동합니다. 09.10.05 157 0
150930 횽들 mfc에 대해서 물어볼게 있는데.. [4] 클란심갤로그로 이동합니다. 09.10.05 77 0
150929 형들 VB 에서 Senddata 말이야 [4] VB어려워(59.6) 09.10.05 63 0
150928 아이리버 스토리로 고민하시는 분들께... [5] 물속의다이아갤로그로 이동합니다. 09.10.05 92 0
150927 인생 뭐 있나.. 도박이나 하자. 유리한갤로그로 이동합니다. 09.10.05 55 0
150925 최근 24시간동안 블로거들이 관심있어한 단어들. [5] rntjr갤로그로 이동합니다. 09.10.05 128 0
150923 C# 무겁지 아니한 질문. [9] 개쉛기갤로그로 이동합니다. 09.10.05 143 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2