Операція delete

Якщо наша програма резервує багато ділянок пам’яті за допомогою операції new, то зрештою весь можливий простір пам’яті буде зайнятим і система впаде. Для того, щоб уникнути цього і ефективно використовувати пам’ять, використовується операція delete. Вона призначена для вивільнення виділених ділянок пам’яті, повертаючи їх операційній системі. В програмі 20.15 рядок

delete[]ptr;

повертає системі пам’ять, на яку вказує вказівник ptr.

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

Звільнення памті не означає видалення вказівника, зв’язаного з цим блоком пам’яті; це і не зміна адреси значення, на яку вказує вказівник. Однак цей вказівник не має сили: пам’ять, на яку він вказує, може бути використана з іншою метою. Тому треба бути обережним і не використовувати вказівників на вивільнену пам’ять

Квадратні дужки, записані після операції delete, означають, що ми звільняємо масив. При звільненні пам’яті, виділеної для одинарного об’єкту, використання дужок не вимагається.

ptr=new SomeClass; //створення обєкту

delete ptr; //вивільнення обєкту

Натомість при вивільненні пам’яті, зайнятої масивом, дужки обов’язкові. Їх використання означає, що ми вивільняємо пам’ять, використовувану для всіх членів масиву, одночасно.

 








Дата добавления: 2015-08-26; просмотров: 608;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.