|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Cassano delle Murge
Messaggi: 1348
|
[Linguaggio C] Perchè questa cosa non si può fare?
#include <stdio.h>
int main (){ int n; printf("inserisci n"); scanf("%d", &n); int vett[n]; } Perchè secondo il mio prof questa cosa non si può fare? Finora l'ho usata e tutto funziona perfettamente, nessuno ha mai criticato la cosa...
__________________
Tanti anni fa ero un modder... Asus P5Q PRO, Q6600@3200 daily cooled by ybris 1.6, 2X2Gb OCZreaper pc8500, Gainward HD4870, psu M520, 2Xmaxtor 160gb - Dell Precision M4800 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
a parte il fatto che l'utente potrebbe mettere un numero negativo, ma questo è un dettaglio; il tuo prof vuole farti di sicuro capire che c'è bisogno di allocare la memoria necessaria per un vettore di n elementi e a fine programma lo devi liberare.
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Cassano delle Murge
Messaggi: 1348
|
Quote:
ma allora perchè funziona? Sono quindi costretto ad allocare dinamicamente memoria ogniqualvolta non conosco la dimensione di un vettore....potevano dirlo direttamente nel corso di fondamenti 1, non farci arrivare a fondamenti 2 per scoprirlo
__________________
Tanti anni fa ero un modder... Asus P5Q PRO, Q6600@3200 daily cooled by ybris 1.6, 2X2Gb OCZreaper pc8500, Gainward HD4870, psu M520, 2Xmaxtor 160gb - Dell Precision M4800 |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Semplicemente non è standard "ANSI C". È una caratteristica disponibile solo nello standard C99 e in C++.
Ormai la maggior parte dei compilatori sono C/C++ (e supportano anche le feature del C99 ... magari non tutte ma questa sì). Se però chiedi al compilatore di compilare in modalità "strict ANSI C" non te la accetta una cosa del genere.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Cassano delle Murge
Messaggi: 1348
|
uhm, provo immediatamente...vediamo un po, io uso dev
__________________
Tanti anni fa ero un modder... Asus P5Q PRO, Q6600@3200 daily cooled by ybris 1.6, 2X2Gb OCZreaper pc8500, Gainward HD4870, psu M520, 2Xmaxtor 160gb - Dell Precision M4800 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Oltre a quotare quanto ha detto andbin, aggiungerei una cosa: quando allochi memoria statica, sei sicuro che quest'ultima e' disponibile per la tua applicazione.
Se questa memoria non fosse disponibile, il programma non viene nemmeno caricato dal sistema operativo. Nel caso non standard, questo non avviene poiche' si tratta di una allocazione dinamica. Come si fa a gestire il caso che la memoria non sia disponibile? Non viene allocato il vettore? Ritorna NULL? Eccezioni? Questa e' una caratteristica molto comoda di alcuni compilatori, ma potrebbe essere anche piuttosto pericolosa...
__________________
In God we trust; all others bring data |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Con tutti i rischi di stack overflow connessi: pensa un pò se qualcuno digita 1 e poi si addormenta sul tasto 0: 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Ho il vago sospetto che il programma non funzionerebbe a dovere |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19149
|
quando NON mi piace questa feature
il tuo prof fa bene, anche se è lecito in C99 non è buona abitudine |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:13.



















