へぇ

CCured について調べていたら、ポインタを初期化する際に malloc() に sizeof の値を渡す場合はどうのこうの、という話が出て来た。で思い出したんですが、id:kosak:20060801 で「初期化子から初期化対象の変数が見えるとか意味わからん」的なことを書いたけれど、これって

ultra_long_type_name_hogehogehoge *p = malloc(sizeof(ultra_long_type_name_hogehogehoge));

ultra_long_type_name_hogehogehoge *p = malloc(sizeof(*p));

で書けるというメリットがありますね*1

*1:sizeof のオペランドは(可変長配列でない限りは)実行時に評価されないので、こう書いても大丈夫です。