new delete operators c with examples
Esplora tutto sugli operatori Nuovo / Elimina in C ++.
Abbiamo già visto variabili e array statici in C ++ nei nostri tutorial precedenti.
Per quanto riguarda la memoria allocata alle variabili e agli array, è la memoria statica che viene allocata dal compilatore a seconda del tipo di dati (in caso di variabili) e delle dimensioni previste per gli array.
La memoria allocata dal compilatore viene allocata nello stack. Ma nella maggior parte dei casi, potremmo non essere consapevoli dell'esatta quantità di memoria di cui abbiamo bisogno.
=> Leggi qui la popolare serie di formazione C ++.
Quello che dovremmo fare è allocare e de-allocare tutta la memoria che vogliamo e anche come e quando lo vogliamo. Questo viene fatto allocando dinamicamente la memoria. A differenza dell'allocazione statica, la memoria allocata dinamicamente viene allocata nell'heap.
L'allocazione dinamica della memoria è utile in quanto possiamo allocare memoria di dimensioni variabili che non possiamo ottenere con la memoria allocata dal compilatore. Abbiamo la flessibilità di allocare la memoria quando ne abbiamo bisogno e di disallocarla quando non ne abbiamo bisogno.
Ma a parte questi usi, dobbiamo anche tenere presente che in caso di memoria allocata dinamicamente, è responsabilità dell'utente de-allocare la memoria. Se ci dimentichiamo di de-allocare la memoria, si verifica una perdita di memoria in cui la memoria non viene rilasciata fino al termine del programma.
Ciò potrebbe comportare un utilizzo eccessivo della memoria e quindi causare gravi colli di bottiglia.
Cosa imparerai:
- Allocazione dinamica della memoria
- Il “nuovo” operatore
- Utilizzo del 'nuovo' operatore con gli array
- L'operatore di eliminazione
- Conclusione
- Lettura consigliata
Allocazione dinamica della memoria
Il linguaggio C utilizza le funzioni 'malloc', 'calloc' e 'realloc' per allocare la memoria in modo dinamico. Per de-allocare la memoria allocata dinamicamente con queste funzioni, utilizza la chiamata di funzione 'libera'. Il linguaggio C ++ supporta anche queste funzioni dal linguaggio C per allocare / de-allocare la memoria.
Oltre a queste funzioni, il C ++ introduce due nuovi operatori più efficienti per gestire la memoria dinamica. Questi sono l'operatore 'nuovo' per l'allocazione della memoria e l'operatore 'cancella' per la disallocazione della memoria.
In questo tutorial, impareremo di più sugli operatori nuovi ed eliminati nel linguaggio C ++.
Il “nuovo” operatore
L'operatore 'new' alloca memoria per una variabile o qualsiasi altra entità su un heap.
La sintassi generale dell'operatore 'nuovo' è:
pointer_variable_of_data_type = new data type;
Il tipo di dati sopra menzionato può essere qualsiasi tipo di dati valido supportato da C ++. Può essere un tipo di dati incorporato o qualsiasi tipo di dati definito dall'utente, incluse classi e strutture.
Per esempio,
miglior pulizia del disco per Windows 10
int *ptr = NULL; ptr = new int();
Nell'esempio precedente, abbiamo dichiarato una variabile puntatore 'ptr' a numero intero e l'abbiamo inizializzata a null. Quindi, utilizzando l'operatore 'new', allochiamo memoria alla variabile 'ptr'. Se la memoria è disponibile nell'heap, la seconda istruzione avrà esito positivo. Se non è disponibile memoria, il nuovo operatore genera l'eccezione 'std :: bad_alloc'.
Quindi è un'idea migliore controllare se la memoria viene allocata correttamente dal nuovo operatore prima di utilizzare questa variabile o entità nel programma.
Possiamo anche inizializzare le variabili usando l'operatore new come segue:
ptr = new int(10);
Nell'esempio precedente, la variabile puntatore 'ptr' è la memoria allocata utilizzando l'operatore new e, allo stesso tempo, il valore assegnato è 10. Questo è ancora un altro modo di inizializzazione in C ++.
Utilizzo del 'nuovo' operatore con gli array
Ancora un altro uso dell'operatore 'new' è l'allocazione della memoria per gli array. Qui specifichiamo il numero di elementi da allocare per l'array.
Di seguito viene fornito un esempio di allocazione di elementi di array utilizzando l'operatore 'new':
int* myarray = NULL; myarray = new int(10);
Qui, il nuovo operatore alloca 10 elementi continui di tipo intero alla variabile puntatore myarray e restituisce il puntatore al primo elemento di myarray.
L'operatore di eliminazione
La memoria allocata dinamicamente utilizzando il nuovo operatore deve essere liberata esplicitamente dal programmatore. A tal fine, ci viene fornito l'operatore 'cancella'.
La sintassi generale dell'operatore di eliminazione è:
delete pointer_variable;
Quindi possiamo liberare la memoria allocata alla variabile ptr sopra come segue:
VPN chrome gratis
delete ptr;
Questa istruzione libera la memoria allocata alla variabile 'ptr' nel pool di memoria.
Possiamo anche usare l'operatore di cancellazione per liberare la memoria allocata agli array.
Per esempio,la memoria allocata all'array myarray sopra può essere liberata come segue:
delete() myarray;
Notare l'operatore pedice utilizzato con l'operatore di cancellazione. Questo perché, poiché abbiamo allocato la matrice di elementi, dobbiamo liberare tutte le posizioni.
Se invece avessimo usato l'affermazione,
delete myarray;
Sappiamo che myarray punta al primo elemento dell'array, quindi l'istruzione sopra cancellerà solo il primo elemento dell'array. L'utilizzo del pedice '()' indica che la variabile la cui memoria viene liberata è un array e tutta la memoria allocata deve essere liberata.
L'esempio di programmazione seguente mostra l'uso di operatori new e delete in C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Produzione:
memoria allocata correttamente
* ptr = 10
* var = 12
Valori myarray: 1 2 3 4 5 6 7 8 9 10
Lo screenshot per lo stesso è fornito di seguito.
Nell'esempio di codice sopra, abbiamo dimostrato l'utilizzo di operatori new e delete. Abbiamo utilizzato l'operatore “new” per allocare memoria per una variabile, array e per inizializzare un'altra variabile con un valore. Quindi eliminiamo queste entità utilizzando l'operatore di eliminazione.
Conclusione
Riguarda gli operatori new e delete di C ++ per quanto riguarda i tipi di dati standard. Possiamo anche utilizzare operatori new e delete per i tipi di dati definiti dall'utente come classi e strutture.
Impareremo di più sull'uso di questi operatori per la creazione di oggetti quando impareremo la programmazione orientata agli oggetti usando C ++.
=> Dai un'occhiata alla guida per principianti di C ++ qui.
Lettura consigliata
- Esempi di operatori aritmetici e booleani di script di shell Unix
- MongoDB Aggiorna ed elimina documento con esempi
- Operatori, tipi ed esempi C ++
- Operatori Python
- Tutorial Python DateTime con esempi
- Comando Taglia in Unix con esempi
- Bubble Sort in C ++ con esempi
- Sintassi dei comandi Cat Unix, opzioni con esempi