내가 예전에 문자열을 초기화 하던 방법:
char temp[64];
temp[0] = 0;
몇년전에 캡콤 밴쿠버에서 일할 때, 동료 프로그래머 하나가 다음의 방법이 더 낫다고 귀뜸해줬다.
char temp[64] = {0, };
그 친구가 이 방법이 나은 이유를 말해줬던거 같은데 사실 기억은 안나고... -_- 그냥 그 뒤로 줄곧 이 방법을 사용해왔다. 뭐 더 나은 방법이라니까.... 근데 최근에 우연히 이 방법이 왜 더 나은지를 알게되었다.
Xbox 360에서 프로파일 캡춰를 하던 도중 위의 코드가 컴파일되면 어떻게 변하는지를 찾아냈으니... 그건 바로 다음과 같다:
char temp[64];
memset(temp, 0, sizeof(char) * 64);
흥미로운 사실.. memset이 호출된다. 이 방법은 5~10 마이크로세컨드 정도가 걸리는데 사실 뭐 그리 걱정할 정도는 아니다. 근데 생각해보면 char 버퍼 선언뒤에 곧바로 strcpy 등의 함수를 호출한다면 굳이 위와 같은 초기화는 할 필요가 없다고 생각된다. (뭐가되든 null 캐릭터가 들어가기만 하면 되니까...)
블로그 잘 보고 있습니다!!
답글삭제항상 좋은 정보 감사합니다^^
감사합니다 ^^
답글삭제