I VLA in genere sono una pessima idea essenzialmente perché allochi sullo stack un array di dimensioni note solo a runtime; se l'array richiesto è troppo grosso (e basta poco, lo stack in genere è al più di qualche MB sui normali OS desktop) mandi in crash l'applicazione (senza alcun messaggio di errore, se sei su Windows).