Формування динамічних масивів з використанням операцій new й delete

Для динамічного розподілу пам'яті використаються операції new й delete. Операція

new ім'я_типу

або

new ім'я_типу инициализатор

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

Приклади:

1) int *i;

i=new int(10);

2) float *f;

f=new float;

3) int *mas=new[5];

У прикладах 1, 2 показано як виділити пам'ять під скалярні змінні, приклад 3 показує виділення пам'яті під масив змінних.

    Операція delete покажчик звільняє ділянку пам'яті раніше виділений операцією new.

Приклад:

Функція для формування двовимірного динамічного масиву

int ** make_matr(int n)

{

int **matr;

int i,j;

matr=new int*[n];

for (i=0;i<n;i++)

{

matr[i]=new int[n];

for (j=0;j<n;j++)

matr[i][j]=random(10);

}

return matr;

}

При формуванні матриці спочатку виділяється пам'яті для масиву покажчиків на одномірні масиви, а потім у циклі з параметром виділяється пам'ять під n одномірних масивів.

**matr

 

 

*matr[1] *matr[2] *matr[3] .... *matr[n]

 

 

 

Щоб звільнити пам'ять необхідно виконати цикл для звільнення одномірних масивів

for(int i=0;i<n;i++)

delete matr[i];

Після цього звільняємо пам'ять на яку вказує покажчик matr

delete [] matr;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: