Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Кафедра АПЕПС
Алгоритмізація та програмування - 2. Процедурне програмування
ЗВІТ
до лабораторної роботи № 2
«Динамічне виділення пам’яті для одно- та двовимірних масивів»
Варіант № 12
Дата «1» травня 2022
Завдання до роботи
1. Ознайомитись з особливостями роботи з динамічними одно- та двовимірними масивами.
2. Розробити Блок-схему програмного алгоритму.
3. Виконати індивідуальне завдання.
4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій.
5. Вихідні дані (завдання) обрати згідно свого варіанта у Додатку B-2.
Варіант-12
/
Теоретичні відомості
Для роботи з динамічною пам’ятю використовують купку (heap). Це доволі великий обсяг неініційованої пам’яті, який доступний програмі. Для роботи з купкою необхідно забезпечити доступ до неї шляхом динамічного виділення деякого обсягу в процесі виконання програми.
Функції для роботи з динамічними об’єктами
malloc
Синтаксис :
void *malloc(size_t size)
Функція malloc виділяє пам’ять, в якості параметра вказується кількість необхідна кількість байтів. Функція повертає пустий вказівник на виділений простір або NULL, якщо виділеної пам’яті недостатньо. Щоб отримати вказівник на тип, який відрізняється від типу void, необхідно використовувати тип значення, яке повертається.
realloc
Синтаксис :
void *realloc(void *memblock,size_t size)
Функція realloc повертає вказівник void на перерозподілений (і, можливо, переміщений) блок пам'яті, в якості параметрів (їх має бути 2 ) використовуються Вказівник на раніше виділений блок пам'яті і новий розмір в байтах. Якщо доступної пам’яті недостатньо для розширення блоку до заданого розміру, вихідний блок залишається без змін, а повертається NULL.
Якщо розмір дорівнює нулю, то блок, на який вказує мемблок, звільняється; значення, що повертається, дорівнює NULL, а блок блоку ліворуч вказує на звільнений блок.
Щоб отримати вказівник на тип, відмінний від void, використовуйте приведення типу на значення, що повертається.
free
Синтаксис :
void free(void *memblock)
Функція free звільняє пам’ять, виділену під блок, в якості параметра зазначається раніше виділений блок пам’яті, який потрібно звільнити. Якщо memblock має значення NULL, вказівник ігнорується, і free негайно повертається.
!!!Для роботи з цими функціями необхідна бібліотека #include <malloc.h>.Без неї, робота даної програми не є можливою!!!
Блок-схема
/
Результати роботи
1.Результати роботи, якщо всі значення допустимі.
Одновимірний масив
/
Двовимірний масив
/
2. Результати роботи, якщо було вибрано недопустиме значення дії для виконання.
/
3. Результати роботи, якщо було вибране недопустиме значення масиву.
Одновиміний масив
/
Двовимірний масив
/
Висновки
Під час виконання роботи даної лабораторної роботи було розглянуто особливості роботи з динамічними одно- і двовимірними масивами. Були розгянуті динамічна тривалість об’єктів, нові функції (для роботи з динамічними масивами).
Створено програму, яка виконує дії над динамічними одно- і двовимірними масивами, дію може обрати користувач за допомогою клавіатури, результати виконання виводяться на екран. Створено блок-схему для кращого розуміння роботи алгоритму.
Програмний код (додаток)
https://replit.com/join/kqxipdnqst-tr-15tkachienko