In article >>262, 262 デフォルトの名無しさん wrote:
> まぁ char *buf = (char*)malloc( size ); と
> 書ければすむ話なんですがね。

っていうか、その表記が許されたとしても、
「宣言と代入が離れすぎていて、freeが先におこなわないことを保証できない」
コードって問題でしょ?

たとえば宣言をmallocからの代入の「すぐ近く」に置くことで、
freeがそれより前の行になってしまうようなものはコンパイル時にエラーに
できちゃうわけで。

> better C としてのC++利用。

Cでもできますね > ブロックの先頭以外に変数宣言を書く。

> 初期化は、こういうことを為かもしれませんね。
> char *a = NULL; char *b = NULL;
>
> if( !a = malloc( size ) ) goto error;
> if( !b = malloc( size ) ) goto error;
> --snip--
> error:
> free(a); free(b)

はい。たぶんそういうことをやりたいんでしょうね。
でもそれはずいぶん汚い書き方ですよね。そっちのほほうを何とかすべきで
あって、「NULLを入れておかないと危険」なような書き方自体に問題がある
わけです。