Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-12-2005, 17:02   #1
nin
Senior Member
 
L'Avatar di nin
 
Iscritto dal: Mar 2000
Città: Parma
Messaggi: 2090
[c++] Gestione della Memoria!

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:

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?
__________________
] I've had enough, sick and tired: bring the sun or I'm gone. [
nin è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 19:14   #2
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
Quote:
Originariamente inviato da nin
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:

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?
così:

Codice:
int main(){ 
int **griglia = 0;
int lato = 0;
    cin >> lato; 
    try {
      griglia = new int*[lato*lato];
    } catch(bad_alloc x) {
        // gestisci qui l'errore di allocazione
    }
    ..
    ..
    delete[] griglia;
return 0;
}
__________________
Ciao ciao cagnolino Billy
MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen.
XBOX Live GamerTag: InsaneMau
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 19:21   #3
nin
Senior Member
 
L'Avatar di nin
 
Iscritto dal: Mar 2000
Città: Parma
Messaggi: 2090
Grazie molto rapido e chiaramente funziona !
.. Edit...
__________________
] I've had enough, sick and tired: bring the sun or I'm gone. [
nin è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 19:28   #4
nin
Senior Member
 
L'Avatar di nin
 
Iscritto dal: Mar 2000
Città: Parma
Messaggi: 2090
..un'ultima cosa, come posso gestire l'errore in modo che mi cicli l'istruzione di inserimento della dimensione?
Una cosa del tipo:
Codice:
...
do {
     cin >>lato;
     try{ 
          griglia= new...
         }
     catch{...}
} while (errore);
...
Spero di essermi spiegato
__________________
] I've had enough, sick and tired: bring the sun or I'm gone. [
nin è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 08:28   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da nin
..un'ultima cosa, come posso gestire l'errore in modo che mi cicli l'istruzione di inserimento della dimensione?
Ciao, puoi fare così (è una delle tante possibilità):

Codice:
while (1)
{
    cin >> lato; 

    try {
        griglia = new int*[lato*lato];
        break;   // Esci dal loop
    } catch(bad_alloc x) {}   // Niente
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 07-12-2005 alle 09:02.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 08:47   #6
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
buona lettura:
http://www.cplusplus.com/doc/tutorial/

__________________
Ciao ciao cagnolino Billy
MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen.
XBOX Live GamerTag: InsaneMau
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 12:24   #7
nin
Senior Member
 
L'Avatar di nin
 
Iscritto dal: Mar 2000
Città: Parma
Messaggi: 2090

Grazie mi ero intestardito sull'idea di utilizzare l'errore come argomento del ciclo, quando in effetti potevo impostare il loop in tutt'altra maniera..Poca esperienza non c'è che dire.
__________________
] I've had enough, sick and tired: bring the sun or I'm gone. [
nin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
I limiti di utilizzo di Claude sono trop...
Stop al ransomware su Google Drive: avvi...
Pragmata entra in fase gold: il titolo d...
Recensione Crimson Desert: la mastodonti...
Google Pixel 11 Pro: i render svelano il...
Ray-Ban Meta: arrivano Blayzer e Scriber...
Ecco le 7 offerte presenti su Amazon col...
Apple compie 50 anni: dai garage di Los ...
OpenAI raccoglie 122 miliardi di dollari...
Blink Outdoor 4 e Mini 2K+ in offerta su...
Beats Studio Buds+ crollano a 109€: tre ...
Le consegne di Amazon in Italia diventan...
Aggiornamento di emergenza per Windows 1...
Il prossimo top di gamma di Xiaomi avr&a...
Robot tagliaerba in offerta su Amazon: q...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v