In base C + + programmazione, le variabili e gli array sono dichiarati dal programmatore direttamente nel codice . Tuttavia, quando si costruisce strutture dati come array ridimensionamento dinamico , il programmatore deve imparare ad allocare dinamicamente la memoria durante l' esecuzione di codice . Array assegnati in questo modo hanno alcuni vantaggi , come la lunghezza non costante in dichiarazione. Il programmatore può allocare array di tipi di dati scalari e le classi create dall'utente identico. Utilizzando i puntatori e le parole chiave incorporati nella libreria standard , C + + rende l'allocazione della memoria e la cancellazione immediata. Cose che ti serviranno
Text Editor
C /C + + Compiler ( ad esempio Microsoft Visual Studio o GCC ) economici Show More Istruzioni
1
creare un puntatore del dati digitare l'array conterrà . Ad esempio, per creare dinamicamente un array di interi , un puntatore intero deve esistere per fare riferimento alla matrice:
int * arr_ptr ;
Il puntatore " arr_ptr " consentirà ora un programmatore di riferimento profonda memoria durante l'esecuzione .
2
usare il puntatore per allocare memoria . La "nuova" parola chiave , che è specifico per le librerie C + + ( e non disponibile in C standard ) sostiene memoria durante l'esecuzione per l'uso del puntatore vocazione :
arr_ptr = new int [ 6] ;
< p > In questo caso , la "nuova" parola chiave afferra un blocco di sei sezioni integer di dimensioni di memoria. Tuttavia, a differenza di matrici dichiarate prima fase di esecuzione, gli array dinamici possono essere dichiarate con ingresso variabile :
int i = 6;
arr_ptr = new int [ i] ;
permette al programmatore di creare array che può ridimensionare in base alle esigenze , piuttosto che la designazione spazio predeterminato .
3
allocare una matrice di tipi di dati creati dall'utente . A seguito di C + + procedura di allocazione della memoria , il programmatore può creare array di tipi di dati dichiarati in classi separate :
int i = 5;
NewClass * class_ptr ;
class_ptr = new NewClass [ i]; .
il puntatore " class_ptr " farà riferimento a una variabile del tipo di dati " NewClass " , molto probabilmente definito in una descrizione della classe in un altro file
4
Eliminare il array. Quando un array è più necessaria ( o è stato copiato in un altro array , possibilmente nel corso di una operazione di ridimensionamento ), il programmatore dovrebbe fare in modo di eliminarlo. Memoria che non viene eliminata allocata , ma non più referenziato, può richiedere fino preziosa memoria e, nel tempo , causare quello che è conosciuto come una perdita di memoria
int i = 5; .
NewClass * class_ptr ;
class_ptr = new NewClass [ i] ;
class_ptr delete [ ] ;
Ora , la matrice a cui fa riferimento " class_ptr " sarà cancellato, e la memoria liberata per altri usi .