C FAQ の 7.32 に
「戻り値を直接別の関数に渡す場合に(略)、例えば
fgets(alloca(100), 100, stdin)のような式で問題を招く」
とありますが、これはなぜでしょう?

alloca()の解放は fgetsを呼ぶ関数の終了時なので
問題ないようにみえますが