|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2001
Messaggi: 142
|
new e delete
Ciao a tutti
Volevo sapere una cosa: io alloco la memoria con int *M = new int; delete M; volevo sapere c'è un metodo per sapre se la memoria allocata è stata disallocata? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() da quello che so io se non dealloca da errore quindi basta intercettarlo con qualcosa del genere: Codice:
...
try
{
delete M;
}
exception (...)
{
<gestione errore>
}
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Comunque di solito si controlla se È stata allocata non il contrario
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2001
Messaggi: 142
|
Hai ragione mi sono spiegato male
io alloco lamemoria in un punto del programma ma non è detto che venga allocata quindi se io dopo la disalloco non avendola mai allocata mi da errore |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Codice:
int *P = NULL;
P = new int;
if ( P == NULL )
errore
if (P) delete P; // SAREBBE INUTILE IL CONTROLLO PERCHE GIÁ CONTROLLATO PRIMA
...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2001
Messaggi: 142
|
Ok tutto chiaro grazie 1000
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Ma spero che non sia veramente quella l'istruzione di alloc altrimenti ti consiglio di espandere un pelo la RAM
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
A dire il vero .. il comportamento di default è che se new non riesce a soddisfare la richiesta, lancia un oggetto di tipo bad_alloc.
Se si vuole avere un NULL, si può fare: .... = new (std::nothrow) .....;
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
ma son quasi sicuro che anni fa col Borland Builder C++ usavo il controllo del NULL Possibile ? O magari sbagliavo e m'é andata di culo, ha sempre allocato bene
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:45.




















