를 사용하여 문자 배열을 할당과 같은 :안녕하세요 최근에 내가 온라인에 코드를 많이 보았다 malloc에
char *p = malloc(sizeof(char) * (len + 1));
이유는 sizeof (문자)? 그럴 필요는 없지, 안 그래? 아니면 그냥 스타일의 문제인가? 어떤 장점이 있습니까?
를 사용하여 문자 배열을 할당과 같은 :안녕하세요 최근에 내가 온라인에 코드를 많이 보았다 malloc에
char *p = malloc(sizeof(char) * (len + 1));
이유는 sizeof (문자)? 그럴 필요는 없지, 안 그래? 아니면 그냥 스타일의 문제인가? 어떤 장점이 있습니까?
예, 스타일이 중요합니다. sizeof(char)
이 항상 하나 일 것으로 예상되기 때문입니다.
반면에 malloc
을 수행 할 때 sizeof(foo)
을 사용하는 관용구가 가장 중요하며 코드 자체를 문서화하게 만듭니다.
유지 관리를 위해 더 좋습니다. 당신이 wchar
에 char
에서 전환 된 경우에, 당신은 많은 생각없이
wchar *p = malloc(sizeof(wchar) * (len + 1));
로 전환 할 것입니다. 성명을 char *p = malloc( len + 1 );
으로 바꾸는 것은 더 많은 생각이 필요합니다. 정신적 인 부담을 줄이는 것이 전부입니다.
type *p = malloc(sizeof(*p) * (len + 1));
을 할 수있는 평범한 버퍼의
type *p = malloc(sizeof(*p) * len));
.
작업을 자체 문서화하는 역할을합니다. 언어는 char을 정확히 1 바이트로 정의합니다. 일부 컴퓨터가 8, 12, 16, 19 또는 30 비트 최소 주소 지정 단위 (또는 그 이상)를 가지고 있기 때문에 비트의 바이트 수를 지정하지 않습니다. 그러나 char은 항상 1 바이트입니다.
사양에 따르면 문자는 1 바이트이므로 반드시 선택 사항입니다. 개인적으로 일관성을 위해 항상 sizeof
을 포함하지만 중요하지 않습니다.
중복 된 http://stackoverflow.com/questions/1011806/is-it-necessary-to-multiply-by-sizeof-char-when 내가 대답을 받아 들일 수는 없지만 (sizeof (char)를 생략하는 것을 더 선호한다) – user85509