nin
06-12-2005, 17:02
Ciao a tutti!
Vorrei sottoporvi un caso immagino molto semplice, ma non riesco a trovare un modo poco complicato per risolvere la cosa.
Supponiamo di avere questo ordinario spezzone di codice:
int main(){
int **griglia = 0;
int lato = 0;
cin >> lato;
griglia = new int*[lato*lato];
..
..
delete[] griglia;
return 0;
}
So che new non ritorna NULL se la dimensione della griglia che si vuole allocare supera la memoria disponibile o se si incappa in qualsiasi altro errore.
In effetti con g++ mi vedo ritornare un eccezione di tipo bad_alloc che non so come gestire: vorrei che il programma non si fermasse ma cancellasse quanto allocato e riproponesse l'inserimento della dimensione fin tanto che l'operazione non va a buon fine.
Come posso fare? Chiedo troppo?
Vorrei sottoporvi un caso immagino molto semplice, ma non riesco a trovare un modo poco complicato per risolvere la cosa.
Supponiamo di avere questo ordinario spezzone di codice:
int main(){
int **griglia = 0;
int lato = 0;
cin >> lato;
griglia = new int*[lato*lato];
..
..
delete[] griglia;
return 0;
}
So che new non ritorna NULL se la dimensione della griglia che si vuole allocare supera la memoria disponibile o se si incappa in qualsiasi altro errore.
In effetti con g++ mi vedo ritornare un eccezione di tipo bad_alloc che non so come gestire: vorrei che il programma non si fermasse ma cancellasse quanto allocato e riproponesse l'inserimento della dimensione fin tanto che l'operazione non va a buon fine.
Come posso fare? Chiedo troppo?