사실... 오늘이 제 기고일은 아니지만... 그냥 개인 블로그에 예전에 올린 글들을 좀 살펴보다가 그냥 여기에 올려도 나쁘지 않은 짧은 꼼수가 보여서... 올립니다.... (뭐 어차피 오늘 예약 걸린 글도 안보이더군요...)
제가 10년전에 문자열을 초기화 하던 방법은 다음과 같습니다.
char temp[64];
temp[0] = 0;
근데 2006년인가 캡콤 밴쿠버에서 일할 때, 동료 프로그래머 하나가 다음의 방법이 더 낫다고 귀뜸해줬지요.
char temp[64] = {0, };
그 친구가 이 방법이 더 나은 이유를 말해줬던거 같은데 사실 기억은 안나고... -_- 그냥 그 뒤로 줄곧 이 방법을 사용해왔죠. 뭐, 더 나은 방법이라니까.... 믿지 뭐..... 근데 최근(사실 첨 글쓴 시기로는 1년전.... -_-)에 우연히 이 방법이 왜 더 나은지를 알게되었습니다.
Xbox 360에서 프로파일 캡춰를 하던 도중 위의 코드가 컴파일되면 어떻게 변하는지를 찾아냈거든요. 다음과 같아요.
char temp[64];
memset(temp, 0, sizeof(char) * 64);
흥미로운 사실.. memset이 호출된다. 이 방법은 5~10 마이크로세컨드 정도가 걸리는데(물론 엑박360 하드웨어에서) 사실 뭐 그리 걱정할 정도는 아니고요. 근데 생각해보면 char 버퍼 선언뒤에 곧바로 strcpy 등의 함수를 호출한다면 굳이 위와 같은 초기화는 할 필요가 없겠네요. (뭐가되든 null 캐릭터만 들어가면 되니까요.)
반응형
'프로그래밍' 카테고리의 다른 글
PC에서 3D 입체 영상 게임 개발하기 #2 (2) | 2012.05.21 |
---|---|
WPF로 디아블로 3 자동 로그인 만들어 보기 (31) | 2012.05.20 |
자기만의 게임엔진을 만들어보자! #1 (20) | 2012.05.18 |
게임 오브젝트 설계.. 나도 잘하고 싶다! #4 (5) | 2012.05.17 |
사고뭉치를 위한 디버깅 방법 #02 (6) | 2012.05.09 |