malloc 呼び出しに対する構造体のサイズについて言及する場合、構造体の名前と逆参照された構造体ポインター変数について言及する方がよいでしょうか?
例:
struct ExampleStruct
{
int x;
char arr[40];
};
int main()
{
struct ExampleStruct *Y = NULL;
Y = malloc(sizeof(struct ExampleStruct)); //Is this better?
Y = malloc(sizeof(*Y)); //Is this better?
}
個人的sizeof(struct ExampleStruct)
には、多くの開発者が 2 番目のメソッドで '*' を忘れて間違いを犯しているのを見てきました。つまり、誤って入力したmalloc(sizeof(Y))
場合、割り当てられるメモリはわずか 4 バイトになります。しかし、私はそれが一般的にも使用されているのを見てきました。