Come allocare dinamicamente un array utilizzando classe in C ++

December 15

Come allocare dinamicamente un array utilizzando classe in C ++


In C ++ di base di programmazione, le variabili e gli array sono dichiarati dal programmatore direttamente nel codice. Tuttavia, quando si costruisce strutture di dati come array di ridimensionamento in modo dinamico, il programmatore deve imparare per allocare dinamicamente la memoria durante l'esecuzione di codice. Array assegnate in questo modo hanno alcuni benefici, come la lunghezza non costante a dichiarazione. Il programmatore può allocare array di tipi di dati scalari e classi create dall'utente in modo identico. Usando puntatori e parole chiave incorporati nella libreria standard, C ++ rende l'allocazione di memoria e la cancellazione semplice.

istruzione

1 Creare un puntatore del tipo di dati dell'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 memoria profonda durante l'esecuzione.

2 Utilizzare il puntatore per allocare la memoria. La parola chiave "nuovo", che è specifico per le librerie C ++ (e non disponibile in serie C) afferma di memoria durante l'esecuzione per l'utilizzo del puntatore chiamando:

arr_ptr = new int [6];

Qui, la parola chiave "nuovo" afferra un blocco di sei sezioni interi dimensioni della memoria. Tuttavia, a differenza di matrici dichiarate prima fase di esecuzione, array dinamici possono essere dichiarate con ingresso variabile:

int i = 6;

arr_ptr = new int [i];

Questo 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 dagli utenti. Seguendo 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 "class_ptr" puntatore riferimento a una variabile del tipo di dati "NewClass", molto probabilmente definito in una descrizione della classe in un altro file.

4 Eliminare l'array. Quando non è più necessario un array (o è stato copiato in un altro array, possibilmente durante un'operazione di ridimensionamento) il programmatore dovrebbe fare in modo di eliminarlo. La memoria allocata che non viene eliminato, 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];

eliminare class_ptr [];

Ora, la matrice a cui fa riferimento "class_ptr" sarà cancellato, e la memoria liberata per altri usi.