User Tools

Site Tools


appunti3s:gestione_della_memoria

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
appunti3s:gestione_della_memoria [2020/06/08 22:19] – external edit 127.0.0.1appunti3s:gestione_della_memoria [2023/10/02 09:54] (current) profpro
Line 56: Line 56:
   * **Memoria dinamica** Durante l'esecuzione del programma può essere necessario allocare (riservare) dinamicamente della memoria. Questo accade per le operazioni dove non si possono prevedere in anticipo le richieste di un utente.    * **Memoria dinamica** Durante l'esecuzione del programma può essere necessario allocare (riservare) dinamicamente della memoria. Questo accade per le operazioni dove non si possono prevedere in anticipo le richieste di un utente. 
 Per riservare una zona di memoria dinamicamente si usa l'operatore //new//. Per riservare una zona di memoria dinamicamente si usa l'operatore //new//.
 +==== memoria automatica ====
 +Esempio di variabile gestito automaticamente (facile da usare)
 +<code>float z; // riserva la quantità di memoria necessaria per un numero in virgola mobile</code>
  
 ==== New ==== ==== New ====
-L'operatore //new// fa parte della libreria standard del C++, ma è una delle poche eccezioni in cui non è necessario specificare il namespace std. +Se durante la compilazione non si conosce quante variabili saranno necessarie, la memoria si allocherà dinamicamente (invece che automaticamente) con //new//L'operatore //new// fa parte della libreria standard del C++, ma è una delle poche eccezioni in cui non è necessario specificare il namespace std. 
  
-Esempio del codice necessario per poter usare new +Esempio:
- +
-<code>#include <new></code>+
  
 <code>new float; // riserva la quantità di memoria necessaria per un numero in virgola mobile</code> <code>new float; // riserva la quantità di memoria necessaria per un numero in virgola mobile</code>
 +
 +Se la memoria centrale fosse esaurita si otterrebbe da //new// un puntatore null, tuttavia includendo uno specifico header si può ottenere un'[[appunti3s:eccezioni]] //bad_alloc exception//. Questo è il codice (in generale non è obbligatorio usarlo):
 +<code>#include <new> </code>
 +
  
 Cosa restituisce l'operatore new? Restituisce l'indirizzo iniziale della memoria che è appena stata riservata.  Cosa restituisce l'operatore new? Restituisce l'indirizzo iniziale della memoria che è appena stata riservata. 
appunti3s/gestione_della_memoria.1591647599.txt.gz · Last modified: 2020/06/08 22:19 by 127.0.0.1