Объект динамического массива

Динамические массивы

Допускается объявление не более чем 4-мерного массива. При объявлении динамического массива (массива с неуказанным значением в первой паре квадратных скобок) компилятор автоматически создает переменную указанной выше структуры (объект динамического массива) и обеспечивает код для правильной инициализации.

Динамические массивы автоматически освобождаются при выходе за пределы области видимости блока, в котором они объявлены.

Пример:

double matrix[][10][20]; // 3-мерный динамический массив
ArrayResize(matrix,5);   // задали размер первого измерения

 
Статические массивы

При явном указании всех значимых размерностей массива компилятор заранее распределяет необходимый размер памяти. Такой массив называется статическим. Тем не менее, компилятор дополнительно распределяет память под объект динамического массива, который (объект) связан с заранее распределенным статическим буфером (областью памяти для хранения массива).

Создание объекта динамического массива обусловлено возможной необходимостью передавать данный статический массив в качестве параметра в какую-либо функцию.

Примеры:

double stat_array[5]; // 1-мерный статический массив
some_function(stat_array);
...
bool some_function(double& array[])
  {
   if(ArrayResize(array,100)<0
      return(false);
   ...
   return(true);
  }

 
Массивы в составе структур

При объявлении статического массива в качестве члена структуры объект динамического массива не создается. Это сделано для совместимости структур данных, используемых в Windows API.

Однако статические массивы, объявленные в качестве членов структур, также можно передавать в MQL5-функции. В этом случае при передаче параметра будет создан временный объект динамического массива, связанный со статическим массивом - членом структуры.

Смотри также

Операции с массивами, Инициализация переменных, Область видимости и время жизни переменных, Создание и уничтожение объектов