Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
То что меняю(2).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
308 Кб
Скачать
☆

7. Динамічний розподіл пам’яті

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

Динамічно виділена пам'яті існує, поки її явно не звільнив програміст. Це відрізняється від статичного розподілу пам'яті, яка має фіксовану тривалість. Кажуть, що об'єкт, що виділяються має динамічний час життя.

Завдання виконання запиту розподілу полягає в знаходженні блока невикористаної пам'яті достатнього розміру.

Проблеми при виконанні запиту розподілу:

Внутрішня і зовнішня фрагментації. Зменшення фрагментації потребує особливої уваги, що робить реалізацію складнішою. Виділення метаданих може збільшити кількість (окремих) малих виділень; Формування блоків намагається зменшити цей ефект.

Як правило, пам'ять виділяється з великого резерву невикористаних областей пам'яті, званої купою. Оскільки точне місце розташування виділених областей не відомо заздалегідь, то доступ до пам'яті є непрямим, як правило, через вказівники. Точний алгоритм, який використовується для організації з виділенням і звільненням областей пам'яті ховається за абстрактним інтерфейсом і може використовуватися будь-яким з методів.

Мова С ++ визначає два оператора динамічного виділення пам'яті - new і delete. Операції new і delete призначені для динамічного розподілу пам'яті комп'ютера. Операція new виділяє пам'ять з області вільної пам'яті, а операція delete вивільняє виділену пам'ять. Виділювана пам'ять, після її використання повинна вивільнятися, тому операції new і delete використовуються парами. Навіть якщо не вивільняти пам'ять явно, то вона звільниться ресурсами ОС по завершенню роботи програми. Операція new створює об'єкт заданого типу, виділяє йому пам'ять і повертає вказівник правильного типу на дану ділянку пам'яті. Якщо пам'ять неможливо виділити, наприклад, у разі відсутності вільних ділянок, то повертається нульовий вказівник, тобто вказівник поверне значення 0. Виділення пам'яті можливо під будь-який тип даних: int, float, double, char і т.д.

Приклад:

int * kyrsova = new int;

delete kyrsova;

8.Висновок

На данній курсовій роботі було створено базу даних «Розклад потягів» з масивом об’єктів, конструктом, деструктором, методами вводу / виводу, методом сортування по «пункту призначенню» бульбашковим способом, пошуку по часу відправлення. Також в програмі було створено додаткова функція «автозаповнення» і функція «справка». Введення / виведення здійснюється через масив об’єкту «china[n]» (china - китай) класу «rozklad_potyagiv». Функція «автозаповнення» може автоматично заповнити 5 об’єктів масиву china[n].

Функція «справка» виводить дані: який студент створив програму (курсову), на яку тему (Розклад потягів) та з якими можливостями (функціями). Дана програма була протестована різними комбінаціями, для перевірки її робото – здатності.

В програмі було створено меню в головній функції для вибору певних дій, які потрібні користувачу.

На данній курсовій роботі я закріпив знання по темі «класи» в об’єктно – орієнтованому програмуванні.