SI POTREBBE fare, ma e'una funzionalita' specifica del compilatore.
Questa sintassi ha avuto alterne vicende (esisteva nel C99, alcuni compilatori la supportano, altri no,...), ma non essendo standard non poi fidarti della sua presenza tra una versione e l'altra del compilatore.
Quello che puoi fare e' usare alloca (con la a finale) che alloca spazio sullo stack invece che nello heap. E non serve chiamare la free perche' lo spazio viene automaticamente rilasciato all'uscita della funzione.