Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2006
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

Частина тексту файла (без зображень, графіків і формул):

MІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ЗВІТ До лабораторної рооти №6 ДИНАМІЧНЕ ВИДІЛЕННЯ ПАМ’ЯТІ В МОВІ ПРОГРАМУВАННЯ С 1. МЕТА РОБОТИ Мета роботи - ознайомитися з особливостями застосування функцій виділення та звільнення пам’яті вмові програмування С та навчитися практично їх застосовувати 2. ТЕОРЕТИЧНІ ВІДОМОСТІ Існує два основних шляхи за допомогою яких програма написана на С може зберігати інформацію в основній пам’яті комп’ютера. Перший шлях використовує глобальні та локальні змінні, що визначені в С, яким виділено необхідну кількість байтів пам’яті самим компілятором, наприклад: int x; виділено 2 бaйта char s; виділено 1 бaйт float f; виділено 4 бaйта double d; виділено 8 бaйт int y[10]; виділено 2x10 бaйт Останній приклад заслуговує більшу увагу. Коли компілятор зустрічає вираз “тип_змінної ім’я_змінної [кількість], то він автоматично резервує потрібну кількість байтів на час виконання програми. До певного часу так зручно. Але розглянемо ситуацію, коли Вам необхідно зформувати одномірний масив з наперед невизначеним числом елементів. Звичайно Ви можете написати щось на зразок int y[100], у випадку коли кількість елементів рівна 100 ваша програма буде працювати ефективно. У випадку, коли кількість елементів буде менше 100, скажімо 2, то із 100*2 байта зарезервовані компілятором, (100-2)х2 байтів витрачені зайво. Ще гірше у випадку коли кількість елементів більше 100, тоді ваша програма буде працювати некоректно, якщо ви не передбачили такої ситуації. Що ж робити ? Ідеальним рішенням такої поширеної проблеми є динамічне (тобто стільки скільки потрібно) виділення пам’яті. В описаній вище ситуації такий підхід дозволить максимально ефективно використати пам’ять. Якщо Ви бажаєте писати професійні програми на С, то володіння і використання динамічного виділення пам’яті є необхідним. Виділення і звільнення пам’яті Функції malloc() та free() є основні функції для роботи з пам’ятю в С. Функція malloc() виділяє пам’ять, а функція free() звільняє її. Це означає, що при кожному виклику malloc() виділяється порція вільної пам’яті. В свою чергу, при кожному виклику free() виділена пам’ять повертається в систему. Кожна програма, яка використовує ці функції повинна містити заголовочний файл stdlib.h в якому зберігаються прототипи цих функцій. Прототип функції malloc(): void* malloc() (unsigned число_байт) Він повертає вказівник типу void, який означає, що Ви можете призначити його до будь-якого типу вказівника. Після успішного виклику malloc() поверне вказівник до першого байта області пам’яті виділеного з “кучі”. В протилежному випадку функція поверне значення нуль. Ви можете використати функцію sizeof() для визначення точного числа байтів потрібного для кожного типу даних. Прототип функції free(): void free(void*p); Ви мусите пам’ятати тільки одну важливу річ - ніколи не викликати free() з неправильним аргументом, тому що це приведе до непередбачуваних дій комп’ютера.
Антиботан аватар за замовчуванням

31.03.2013 14:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!