Oggetto Array Dinamico

Array dinamici

Massimo array a 4-dimensioni possono essere dichiarati. Quando si dichiara un array dinamico (un array di valore non specificato nella prima coppia di parentesi quadre), il compilatore crea automaticamente una variabile della struttura di cui sopra (un oggetto array dinamico) e fornisce un codice per la corretta inizializzazione.

Array dinamici vengono automaticamente liberati quando si va oltre l'area visibilità del blocco in cui sono dichiarati

Esempio:

double matrix[][10][20]; // array dinamico tri-dimensionale
ArrayResize(matrix,5);   // Imposta la grandezza della prima dimensione

Array statici #

Quando tutte le significative dimensioni dell'array sono specificate in modo esplicito, il compilatore pre-alloca la dimensione necessaria della memoria. Un tale array è chiamato statico. Tuttavia, il compilatore alloca memoria aggiuntiva per l'oggetto di un array dinamico, il cui (oggetto) è associato al buffer statico pre-assegnato (parte della memoria per memorizzare l'array).

La creazione di un oggetto array dinamico è dovuta alla possibile necessità di passare questo array statico come parametro per qualche funzione.

Esempi:

double stat_array[5]; // array statico uni-dimensionale
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0return(false);
   ...
   return(true);
  }

Array in Strutture

Quando un array statico è dichiarato come un membro di una struttura, un oggetto array dinamico non viene creato. Questo viene fatto per garantire la compatibilità delle strutture di dati utilizzati per la API di Windows.

Tuttavia, gli array statici che vengono dichiarati come membri delle strutture, possono anche essere passati funzioni-MQL5. In questo caso, quando si passa il parametro di un oggetto temporaneo di un array dinamico, collegato con l'array statico - verrà creato il membro della struttura.

Vedi anche

Funzioni di Array, Inizializzazione delle Variabili, Visibilità Ambito di Applicazione e Durata delle Variabili, Creazione ed Eliminazione di Oggetti