Динамический массив и его особенности

Массивом в общем случае называют упорядоченный набор элементов, каждый из которых имеет определенный (один и тот же) тип. Массивы бывают статическими и динамическими. Длина первого задается на этапе программирования, т.е. перед началом запуска программы на выполнение, второго – по ходу выполнения.
Для статического массива при описании должно быть определено количество элементов, которое в течение работы программы нельзя изменить (увеличить или уменьшить). При запуске программы, использующей статический массив, на выполнение в оперативной памяти выделяется некоторое количество байт для хранения его элементов. Этот объем памяти будет закреплен за программой до тех пор, пока она не закончит свою работу. Даже если эта память не будет использоваться, никакой другой программный код не сможет получить к ней доступ.
Язык программирования Pascal может работать только со статическими массивами. Поэтому, если требуется работать с последовательностью переменной длины, можно описать структуру, например, из ста элементов, и использовать на разных этапах разное количество элементов, не превышающее число 100. А это, конечно, неразумно.
Такой проблемы не существует в интегрированной среде разработки Delphi. Динамический массив позволяет при описании не указывать количество элементов, а определять его во время выполнения программы. Динамический массив можно описать в разделе Var следующим образом:
Var Massive:array of integer

 delphi динамический массив

Таким образом, структура, обозначенная идентификатором Massive, представляет собой линейную целочисленную последовательность неизвестной (пока!) длины. Чтобы задать размер, в программе необходимо применить процедуру SetLength, например, SetLength(Massive,9). Динамический массив Massive обретет размерность, равную числу 9. Теперь определено, что в последовательности присутствуют девять элементов целого типа, пронумерованные от нуля. Такими особенностями обладает динамический массив. Delphi имеет процедуру, освобождающую память от набора чисел, когда потребность в их хранении отпала. Это процедура Finalize, в нашем случае она будет применена следующим образом: Finalize(Massive).

динамический массив

Подобным образом можно описывать и применять многомерные динамические массивы в Delphi. Например, двумерная динамическая структура будет описана так:
Var Massive:array of array of integer
При необходимости столбцы матрицы могут быть разной длины. Это также задается процедурой SetLength.

динамический массив delphi

Часто бывает, особенно в больших и сложных программах, что некоторые структуры данных используются время от времени или только в начале/конце работы программы. При этом было бы очень расточительным держать место в оперативной памяти «про запас». Динамический массив – один из способов рационального распределения ресурсов вычислительной системы. Хотя и обладает некоторыми недостатками. Во-первых, это не всегда удобная нумерация элементов с нуля. Во-вторых, программисту нужно постоянно понимать в каждой точке программного кода, в каком состоянии находится динамический массив. Но его достоинства делают смешными все эти трудности. В частности, если требуется передать из подпрограммы данные большого объема, то без динамического способа представления не обойтись.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.