покажчик всього лише вказує на область пам'яті, в якій зберігається змінна. Це властивість покажчика дуже корисно, але є ще одне, набагато частіше застосовується в програмуванні. Покажчик дозволяє здійснити динамічне виділення пам'яті.
примітивні типи даних мають певний розмір пам'яті, розняти лише від варіанту платформи.
Дізнатися його можна за допомогою функції sizeof ().
Структури і класи, про які ми поговоримо в інших уроках, займають пам'яті рівно стільки, скільки всі типи даних, що входять до їх поля.
структура пам'яті
структура будь-модульна програми така, що складається з =
- стека
- і решті пам'яті, званої купою.
Стек - це спеціальна структура даних, призначена для швидкого доступу до даних. Цю структуру ще часто називають LIFO (Last In First Out) - останнім прийшов, першим пішов. Стек являє собою, як би обойму, в яку замість патрона заганяється чергова змінна.
В силу своєї природи стековая пам'ять працює набагато швидше, ніж звичайна.
Стек багатьом хороший, але от у нього є маленька проблема - обмежений обсяг пам'яті. Примітивні типи даних займають мало пам'яті і тому приміщення їх в стек є логічно правильним рішенням, що прискорює роботу програми.
Однак в C ++, так само як і в інших компільованих мовах, існують громіздкі типи даних типу =
Змінні цих типів можуть займати великі області пам'яті, що може привести до переповнення стека і екстреного припинення роботи вашої програми.
Це дуже неприємний момент в кодуванні. Щоб уникнути подібної долі, була придумана концепція розміщення таких громіздких типів даних у вільній області пам'яті, званої купою.
Ку? Ча (англ. Heap) в інформатиці та програмуванні - назва структури даних, за допомогою якої реалізована динамічно розподіляється пам'ять додатки, а також обсяг пам'яті, зарезервований під цю структуру.
Фактично, купа - це вся ваша оперативна пам'ять. Гігабайт або 4 гігабайти - ролі не грає. Все це буде купою
Що дає купа? Практично величезний обсяг пам'яті, здатний вмістити в себе навіть найбільший тип даних.
Для розміщення і видалення динамічних об'єктів використовуються примітиви «створити об'єкт» (наприклад, malloc. New) і «видалити об'єкт». Крім того, перед початком роботи програми виконується ініціалізація купи, в ході якої вся спочатку виділена під купу пам'ять відзначається як вільна.
При розміщенні об'єкта реалізація примітиву «створити об'єкт» переглядає доступну купі вільну пам'ять в пошуках можливості розмістити в ній об'єкт необхідного розміру. Багато реалізації примітивів купи можуть в разі нестачі власної вільної пам'яті запитати додаткову пам'ять у операційної системи. У разі, якщо з тих чи інших причин розмістити об'єкт неможливо, примітив «створити об'єкт» повідомляє про помилку