Что это такое?
Когда мы объявляем массив, место для него выделяется во время трансляции, т. е. до выполнения программы. Такой массив называется статическим.
В то же время иногда размер данных заранее неизвестен. Например, пусть в файле записан массив чисел, которые нужно отсортировать. Их количество неизвестно, но известно, что такой массив помещается в оперативную память.
В этом случае есть два варианта:
1) выделить заранее максимально большой блок памяти;
2) выделять память уже во время выполнения программы (т. е. динамически), когда станет известен необходимый размер массива.
Другой пример — задача составления алфавитно-частотного словаря. В файле находится список слов. Нужно вывести в другой файл все различные слова, которые встречаются в файле, и определить, сколько раз встречается каждое слово. Здесь проблема состоит в том, что нужный размер массива можно узнать только тогда, когда все различные слова будут найдены и, таким образом, задача решена. Поэтому нужно сделать так, чтобы массив мог «расширяться» в ходе работы программы.
Эти задачи приводят к понятию динамических структур данных, которые позволяют во время выполнения программы:
• создавать новые объекты в памяти;
• изменять их размер;
• удалять их из памяти, когда они не нужны.
Память под эти объекты выделяется в специальной области, которую обычно называют «кучей» (англ. heap).
Следующая страница Размещение в памяти