русс | укр

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

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


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


Динамічна пам’ять. Команди new і delete.


Дата додавання: 2014-11-28; переглядів: 1064.


Принцип динамічної організації пам’яті полягає у тому, що для змінних надається пам’ять за необхідністю (за вказівкою програміста). Далі ці змінні опрацьовують і в потрібний момент пам’ять вивільняють (знову за вказівкою програміста). Такі змінні називаються динамічними.

Для роботи з динамічними змінними використовують вказівники. Для виділення динамічної пам’яті застосовується команда new так:

<тип вказівника> *<назва> = new <тип змінної>;

Дія команди new. Для відповідного типу змінної автоматично надається необхідна неперервна ділянка пам’яті. Команда new повертає обсяг цієї ділянки, а вказівник вказує на її початок. Наприклад, щоб зарезервувати у пам’яті комп’ютера область для зберігання значення цілого типу, застосовують таку команду:

int*prt2 = new float(3.14);

У адресу, на яку показує prt2, буде занесене число 3,14.

З динамічною змінною можна виконувати операції, визначені для даних відповідного базового типу.

Після опрацювання динамічних змінних пам’ять необхідно вивільнити, а відповідний вказівник занулити. Якщо цього не зробити, то пам’ять можна вичерпати. Вивільняють пам’ять за допомогою команди

delete <назва вказівника>;

Щоб вказівник не вказував на жодну ділянку пам’яті, його необхідно занулити такою командою:

<назва вказівника> = NULL;

Значенням (адресою) такого вказівника буде нульова адреса 0х00000000. Тут не можна бути розміщене значення жодного даного.

Довідка. Замість значення NULL можна записати <назва вказівника> = 0.

Приклад 7. Розглянемо, як відбувається розподіл пам’яті. Надамо пам’ять для двох змінних цілого типу та присвоїмо їм деякі значення. Пізніше вивільнимо пам’ять.

#include<iostream.h>

void main()

{

int *c1 = new int;____________________________________________________________

*c1 = 5;_____________________________________________________________________

int *c2 = new int(7);__________________________________________________________

cout << *c1 << “\t” << *c2 << “\n”;______________________________________________

 

c1 = c2;_____________________________________________________________________

cout<< *c1 << “\t” << *c2 << “\n”;______________________________________________

delete(c2);__________________________________________________________________

cout << *c1 << “\n”;__________________________________________________________

}

Контрольні запитання

Питання Відповідь
Для чого призначена функція clrscr()?    
2. Для чого використовують команду endl?  
3. Яку бібліотеку необхідно під єднати, щоб працювала функція getch()?  
4. Вказівник – це …  
5. Як описуються вказівники?  
6. Як дізнатися адресу даного у пам'яті?  
7. Які змінні називають динамічними?  
8. З допомогою якої команди вивільняють пам'ять?  
9. Коли вказівник не вказуватиме на жодну ділянку памяті?  


<== попередня лекція | наступна лекція ==>
Вказівники. | Виконання завдань


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