일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 포커
- 프로그램 개발
- 카일레라
- 영어단어
- 옥션소송
- holdem
- 서치아이
- 틀린그림 찾기
- 상호링크
- Mame32
- 맞고
- 윈윈전략
- 카일레라서버
- 게임 외주
- 티스토리 초대장
- 윈윈
- 홀뎀
- 보드게임
- 맞고게임
- MAME
- 틀린그림찾기
- 옥션해킹
- 온라인게임
- 영어단어게임
- 고스톱
- 판매
- 써치아이
- 포커게임
- 프로그램 외주
- 게임 개발
- Today
- Total
kyuseo의 게임 프로그래밍
MFC 템플릿(Template) 클래스 CMap< CString, LPCTSTR, int, int > 의 주의사항 본문
개요.. |
매우 편리하고 유용한 MFC 템플릿(Template) 클래스 CMap< CString, LPCTSTR, int, int > 의 사용 주의 사항을 설명 드립니다.
주의사항 |
CMap 사용하기 무척 편리합니다. 특히 스트링(String)맵의 경우 사용용도가 높으나 아래와 같이 오류발생 가능이 있는 코드가 존재하니 주의해서 사용합니다.
올바른 코드
CMap< CString, LPCTSTR, int, int > map; map["One"] = 1; map["Two"] = 2; CString s1 = map["One"]; CString s2 = map["Two"]; CString s3 = map["Three"]; CString s4 = map[ NULL ]; |
문제의 코드
char* sz = "One"; CString s1 = map[ sz ]; sz = NULL; CString s2 = map[ sz ]; |
위의 코드에서는 sz 가 NULL 이 되면 치명적인 오류가 발생할 수 있으니 주의합니다.
(특히 게임 서버에서 사용할 경우에 주의합니다.)
보너스 오류 발생 코드
char* sz = NULL; int len = strlen( sz ); strcmp( sz, "123" ); |
위와 이 strcmp, strlen 등의 함수를 사용할 경우에는 인자가 NULL 이면 프로그램이 다운됩니다.