logo search
ООП для Заоч / Пинчук Лозовская Программир на С

7.3. Динамічні об'єкти й масиви

Динамічними називаються об'єкти, які створюються й знищуються в області пам'яті, яка розподіляється динамічно (її називають купою або heap-областю оперативної пам'яті) за допомогою операцій new і delete. Для роботи з динамічними об'єктами використовуються як покажчики, так і посилання. Для створення (виділення пам'яті) і знищення (звільнення області пам'яті, зайнятої об'єктом) використовуються спеціальні операції new і delete. Нижче приводиться фрагмент програми, у якому створюється й потім видаляється динамічний об'єкт типу double.

double p = new double; // об'єкт створений, покажчик p // зберігає адресу об'єкта

*p = 3.333; // ініціалізація об'єкта

...................... // інші операції з об'єктом

delete p; // об'єкт знищено

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

У наведеному вище прикладі для створення, виконання операцій і видалення динамічного об'єкта використовується покажчик p. Нижче приводиться фрагмент програми, у якому для виконання таких же операцій застосовується посилання:

double& r = (new double); //r - посилання на створений об'єкт

r = 3.333; // ініціалізація об'єкта

...................... // інші операції з об'єктом

delete &r; // об'єкт знищується

При виконанні операції new пам'ять виділяється блоками по 16 байт. Якщо для створення об'єкта операцією new не існує достатньо пам'яті, ця операція повертає значення 0 (NULL). Приклад створення динамічного об'єкта з контролем успішності виділення пам'яті:

#include <new.h>

#include <syst.h>