꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by 김포프

사실... 오늘이 제 기고일은 아니지만... 그냥 개인 블로그에 예전에 올린 글들을 좀 살펴보다가 그냥 여기에 올려도 나쁘지 않은 짧은 꼼수가 보여서... 올립니다.... (뭐 어차피 오늘 예약 걸린 글도 안보이더군요...)


제가 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 캐릭터만 들어가면 되니까요.)





반응형
,