русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Операція delete


Дата додавання: 2014-04-22; переглядів: 936.


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

delete[]ptr;

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

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

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

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

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

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

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

 


<== попередня лекція | наступна лекція ==>
Операція new | Клас String з використанням операції new


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн