Come possiamo allocata dinamicamente Array Size?

May 16

Array di programmazione di computer sono raccolte o sequenze di valori contenuti in un unico nome di variabile. Queste strutture di dati permettono ai programmatori di rappresentare serie di dati o elenchi di dati per una varietà di scopi, come l'ordinamento o iterazione. Tuttavia, in molti linguaggi di programmazione, come C / C ++, i programmatori devono dichiarare array, array di dimensioni immutabili statici. Utilizzando tecniche di allocazione della memoria in un linguaggio come C ++, il programmatore può creare dinamicamente gli array o anche ridimensionare le matrici durante l'esecuzione del programma.

Array

In linguaggi di livello inferiore come C o C ++, gli array sono statici. Una volta dichiarato con un valore di dimensione, che array sempre mantenere quella dimensione. Il compilatore alloca un blocco di memoria continua per la matrice. Tutte le altre funzioni o variabili che necessitano di memoria saranno collocati dopo l'array. Di conseguenza, la matrice non può cambiare dimensioni senza sovrascrivere i dati che lo segue. Così, per esempio, una volta un programmatore dichiara una matrice con venti locali, tale matrice avrà sempre venti spazi, siano essi utilizzati o no, per la vita della struttura dati.

Allocazione di memoria sul mucchio

Per aggirare questa limitazione, tuttavia, i programmatori possono allocare memoria sul mucchio. Normalmente, le variabili e le matrici dichiarate in un programma o una funzione sono posti sullo stack, che rappresenta essenzialmente la memoria a breve termine. Una volta che la durata della funzione matrice esiste finiture, l'array viene eliminato. Utilizzando il "nuovo" parola, tuttavia, il programmatore può raccogliere memoria dall'heap, che è memoria a lungo termine che esiste al di fuori della funzione che dichiara l'array. Inoltre, il programmatore può utilizzare il mucchio di dichiarare array dinamico.

array dinamici

Con gli array, il programmatore deve dichiarare la dimensione della matrice a dichiarazione. Questa dimensione deve essere rappresentato da un valore costante, sia una variabile costante o un numero intero. Tuttavia, utilizzando l'operatore "nuovo", il programmatore può utilizzare variabili regolari per gli array di dimensioni, e l'utente può anche inserire il valore di queste variabili durante la fase di esecuzione. L'esempio seguente mostra la differenza:

int main () {

int arr [5]; // Nuovo array, devono essere dimensionati valore costante
int size = 5;
int * Dynamic_Array = new int [size]; // Dimensione della matrice è dinamica

Ridimensionamento Array

Con questi array dinamici, il programmatore può quindi creare le matrici che possono essere ridimensionate. La classe "vettore" rappresenta un array di espansione dinamica o restringimento tale vantaggio taks di array dinamici. L'esempio seguente illustra come creare un semplice array che cresce di dimensioni maggiori:

int main () {

int * arr = new int [5];
int new_size = 10;

arr [0] = 1;
arr [1] = 2;

/ Ridimensionare /
int * arr2 = new int [new_size];

arr2 [0] = arr [0];
arr2 [1] = arr [1];

delete [] arr;
arr = arr2;

return 0;
}