Originariamente inviato da shodan
Ne C ne C++ controllano un eventuale sforamento dei limiti massimi dell'array, e cosa succede, quando avviene, ricade nel "comportamento indefinito" (undefined behaviour).
Quindi l'unico metodo è controllare e ricontrollare mille volte il codice perchè solo io (o cmq il programmatore) può controllare che tutto sia giusto comprese le dimensioni e i valori dell'array, altrimenti tutto mi si compila come se niente fosse. Giusto?
Perchè quando lo compilo con la dimensione sbagliata non è che mi restituisce un valore random, no, mi restituisce il valore che ho definito io anche se fuori dall'array!
Quindi per questo problema è colpa del compilatore oppure è solamente il linguaggio che non controlla?

Originariamente inviato da shodan
Perché è una porcheria introdotta nel gcc e poi ratificata nello standard ISO C99 che prevede i VLA ( variable length array ). A quanto ne so funziona solo su gcc e i vari porting, ma non su altri compilatori. Il C++ non prevede questa ciofeca e giustamente si rifiuta di compilare se gliela proponi. Attualmente, poi, DEVC++ è un insulto, non un compilatore.
Il mio consiglio è passare a VC++ Express o ( se non ti piace M$ ) a CodeBlocks ( di cui trovi vari porting).
In questo secondo caso quindi è solo colpa del compilatore? Se compilassi con altri programmi questi mi si rifiuterebbero di compilare ciò che ho scritto sopra?

I programmi che mi citi sono gratis o a pagamento? (scusate l'ignoranza! )
Grazie mille per la risposta!!!