(una pessima invenzione di GCC) e il modo inopinato in cui sono divenuti parte dello standard C99, pur essendo una idiozia
Sicuramente degli enti internazionali come la ISO e la IEC, creando un commitee composto da professionisti di tutto il mondo, se hanno ritenuto indispensabile non solo inserirli nello standard C99, ma addirittura di confermali per il lo standard C11 forse qualche buona ragione ce l'hanno avuta....
I VLA non fanno altro che nascondere al programmatore incauto il solito banale meccanismo della malloc, rendendolo implicito e togliendo controllo, il che per definizione è male.
I VLA non hanno nulla a che fare con malloc & co......e per fortuna. Hanno automatic storage duration (normalmente stack allocated): non vedono la heap nemmeno da lontano, anzi appena ne sentono la puzza scappano a gambe levate...
Inoltre l'allocazione "automatica" (una farsa, in realtà) sullo stack li rende un enorme problema dal punto di vista di sicurezza e robustezza, il che è un bel paradosso considerandone la provenienza.
Quindi secondo questo concetto, qualunque array/matrice allocato localmente è una stupidata? Una qualunque variabile globale o puntatore che sia è una min... possibile backdoor?...
Quanto alle considerazione su malloc multiple e frammentazione, evidentemente il codice che hai avuto per le mani non è stato scritto da professionisti
Non so in quale mondo vivi tu, ma basta guardare qualche driver del kernel di linux per vedere deframmentazioni a iosa. Inoltre il mio commento si riferiva al contesto in cui siamo e al (purtroppo) basso livello di insegnamento presente in questo paese.
la loro incidenza statistica nel codice del real world è omeopatica
Nel tuo caso, proferendo solo verità assoluta, questa affermazione è da prendersi come vera de facto....
Il supporto ai VLA è stato introdotto malvolentieri e molto tardivamente solo in mezza dozzina di compilatori C mainstream, e sono del tutto inesistenti nella schiacciante maggioranza dei cross-compiler
Ci vorrebbe qualche nota/riferimento a supporto di tale affermazione. Così è solo un discorso da bar: sarà la mia limitata esperienza di 20 anni, ma i pochi cross-compilatori che non li supportano o sono vecchiotti o sono specializzati.
d'altro canto l'allocazione dinamica è deprecata in qualsiasi normativa per il software critico, dalla MISRA/C in là, figuriamoci quindi se si potrebbe accettare codesta robaccia
MISRA/C fa riferimento all'allocazione dinamica (rule 20.4), ma, che io sappia, non fa riferimento ai VLAs.
Per concludere, non volgio continuare in una polemica inutile, tanto le parti rimarranno della loro idea in ogni caso.
Quello che mi sembra corretto è non demonizzare nulla in maniera assoluta, specialmente quando le domande sono fatto da newbies a cui è forse più utile spiegare i differenti approcci con i pro e contro del caso.