参照てか自動変数へのポインタを戻してたってこと?

struct foo * hoge()
{
  struct foo body;
  retrun &body;
}

これ未定義だからどうとでもなってしまうんじゃなかったかな…
コンパイラが気を利かしてエラーや警告にするのも
そのまま実行コードを生成して想定外の動きをするのも