Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

9.5.2. Ініціалізація динамічно виділеної пам'яті

Використовуючи оператор new, динамічно виділену пам'ять можна ініціалізувати. Для цього після імені типу необхідно задати початкове значення, уклавши його в круглі дужки. Наприклад, у наведеному нижче коді програми область пам'яті, яка адресується покажчиком р, ініціалізується значенням 99.

Код програми 9.16. Демонстрація ініціалізації динамічно виділеної пам'яті

#include <iostream> // Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

int main()

{

int *p;

p = new int (99); // Ініціалізується пам'ять числом 99.

cout << *p; // На екран виводиться число 99.

delete p;

getch(); return 0;

}

9.5.3. Динамічне виділення пам'яті для масивів

За допомогою оператора new можна динамічно виділяти пам'ять і для масивів. Ось як виглядає загальний формат операції динамічного виділення пам'яті для одновимірного масиву:

змінна-покажчик = new тип [розмір];

У цьому записі елемент розмір задає кількість елементів у масиві.

Щоб звільнити пам'ять, виділену для динамічно створеного масиву, використовують такий формат оператора delete:

delete [] змінна-покажчик;

У цьому записі елемент змінна-покажчик є адресою, що отримується під час виділення пам'яті для масиву (за допомогою оператора new). Квадратні дужки означають для C++-компілятора, що динамічно створений масив видаляється, а вся область пам'яті, виділена для нього, автоматично звільняється.

Необхідно пам'ятати! Старіші версії С++-компілятора можуть вимагати задавання розміру масиву, що видаляється, оскільки в ранніх версіях мови C++ для звільнення пам'яті, займаної масивом, що видаляється, необхідно було застосовувати такий формат оператора delete:

delete [розмір] змінна-покажчик;

У цьому записі елемент розмір задає кількість елементів у масиві. Стандарт мови програмування C++ більше не вимагає вказувати розмір при його видаленні.

У процесі виконання наведеної нижче програми виділяється пам'ять для 10-елементного масиву типу double, який потім заповнюється значеннями від 100 до 109, після чого вміст цього масиву відображається на екрані.

Код програми 9.17. Демонстрація виділення пам'яті для масивів

#include <vcl>

#include <iostream> // Для потокового введення-виведення

#include <conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

int main()

{

double *p;

int i;

p = new double [10]; // Виділення пам'яті для 10-елем. масиву.

// Заповнюємо масив значеннями від 100 до 109.

for(i=0; i<10; i++) p[i] = 100.00 + i;

// Відображаємо вміст масиву.

cout << "Ініціалізований масив <p>\n";

for(i=0; i<10; i++) cout << p[i] << " ";

cout << "\n";

delete [] p; // Видалення всього масиву.

cout << "Видалений масив <p>\n";

for(i=0; i<10; i++) cout << p[i] << " ";

cout << "\n";

getch(); return 0;

}

Необхідно пам'ятати! При динамічному виділенні пам'яті для масиву його не можна одночасно ініціалізувати.