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

При объявлении массива нужно задать точное количество элементов. На основе этой информации при запуске программы автоматически выделяется необходимый объем памяти. Иными словами, размер массива нужно знать до выполнения программы. Во время выполнения программы увеличить размер существующего массива нельзя.

Чтобы произвести увеличение массива во время выполнения программы необходимо выделить достаточный объем памяти с помощью оператора new, перенести существующие элементы, а лишь затем добавить новые элементы.

Управление динамической памятью полностью лежит на плечах программиста, поэтому после завершения работы с памятью необходимо самим возвратить память операционной системе с помощью оператора delete. Если память не возвратить операционной системе, то участок памяти станет недоступным для дальнейшего использования. Подобные ситуации приводят к утечке памяти.

Операторы new и delete применительно к массивам мы уже рассматривали в разд. 3.19.2, поэтому не будем повторяться. Просто откройте этот раздел и прочитайте еще раз.

В языке C++ вместо выделения динамической памяти под массив можно использовать класс vector (см. разд. 16.4), который реализует динамический массив. Следить за размерами динамического массива нет необходимости, т. к. управление динамической памятью осуществляется автоматически:

// #include <vector>
std::vector<int> arr;
// Добавляем элементы в массив
for (int i = 0; i < 5; ++i) arr.push_back(i + 1);
// Выводим значения
for (int item : arr) {
   std::cout << item << ' ';
} // 1 2 3 4 5

Подробно класс vector и другие классы, реализующие динамические массивы, мы рассмотрим в главе 16.

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов