Objet Tableau Dynamique

Tableaux Dynamiques

Des tableaux de 4 dimensions maximum peuvent être déclarés. Lors de la déclaration d'un tableau dynamique (un tableau avec une valeur non spécifiée pour les 2 premières paires de crochets), le compilateur crée automatiquement une variable de la structure ci-dessus (un objet tableau dynamique) et fournit le code pour une initialisation correcte.

Les tableaux dynamiques sont libérés automatiquement lors de la sortie du bloc dans lesquels ils sont déclarés.

Exemple :

double matrix[][10][20]; // tableau dynamique à 3 dimensions
ArrayResize(matrix,5);   // Définit la taille de la première dimension

Tableaux Statiques #

Lorsque toutes les dimensions significatives du tableau sont explicitement spécifiées, le compilateur pré-alloue la taille suffisante de mémoire. Ce type de tableau est appelé statique. Néanmoins, le compilateur alloue de la mémoire supplémentaire pour l'objet d'un tableau dynamique, qui est associé avec le buffer statique pré-alloué (partie de la mémoire pour stocker le tableau).

La création d'un objet tableau dynamique est dû au besoin possible de passer ce tableau statique comme paramètre à certaines fonctions.

Exemples :

double stat_array[5]; // tableau statique à 1 dimension
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0return(false);
   ...
   return(true);
  }

Tableaux dans les Structures

Lorsqu'un tableau statique est déclaré comme membre d'une structure, l'objet du tableau dynamique n'est pas créé. Ceci est fait pour assurer la compatibilité des structures de données utilisées dans les API de Windows.

Cependant, les tableaux statiques qui sont déclarés comme membres de structures peuvent également être passés aux fonctions MQL5. Dans ce cas, lors du passage du paramètre, un objet temporaire de tableau dynamique sera créé. Un tel objet est lié avec le tableau statique - membre de structure.

Voir aussi

Fonctions de Tableaux, Initialisation des Variables, Portée de Visibilité et Cycle de Vie des Variables, Création et Suppression des Objets