次の行を検討します。
char *p = malloc( sizeof(char) * ( len + 1 ) );
sizeof(char)が使用されるのはなぜですか?必要ありませんよね?それともスタイルの問題ですか?
どのような利点がありますか?
はい、それはスタイルの問題です。なぜなら、あなたはsizeof(char)
常に1つであると期待するからです。
一方、をsizeof(foo)
実行するときに使用するのは非常にイディオムmalloc
であり、最も重要なことは、コードを自己文書化することです。
おそらく、メンテナンスにも適しています。に切り替える場合は、にchar
切り替えwchar
ます
wchar *p = malloc( sizeof(wchar) * ( len + 1 ) );
あまり考えずに。一方、ステートメントを変換するにchar *p = malloc( len + 1 );
は、さらに検討が必要です。精神的なオーバーヘッドを減らすことがすべてです。
そして@Nyanがコメントで示唆しているように、あなたもすることができます
type *p = malloc( sizeof(*p) * ( len + 1 ) );
ゼロで終了する文字列の場合
type *p = malloc( sizeof(*p) * len ) );
通常のバッファ用。
これは、操作を自己文書化するのに役立ちます。この言語では、charを正確に1バイトと定義しています。一部のマシンには8、12、16、19、または30ビットの最小アドレス可能単位(またはそれ以上)があるため、そのバイトに含まれるビット数は指定されません。ただし、charは常に1バイトです。
仕様では、文字は1バイトであると規定されているため、厳密にはオプションです。私は個人的sizeof
に一貫性の目的で常にを含めますが、それは問題ではありません