:
new Type (parameters)
де Type - тип створюваного об'єкта, на основі якого компілятор автоматично визначить необхідний для нього обсяг пам'яті;
parameters - необов'язковий список параметрів, який буде переданий конструктору об'єкта. У разі відсутності списку параметрів дужки вказувати необов'язково.
Функція malloc, що дісталася мови C ++ у спадок від C, вимагає зазначення необхідної кількості байт і не виробляє окрім власне виділення пам'яті ніяких додаткових дій.
Функції операційної системи Windows - LocalAlloc і GlobalAlloc - вважаються застарілими, хоча і підтримуються з метою сумісності. Сучасним додаткам рекомендується користуватися HeapAlloc, а також VirtualAlloc, яка, крім виділення пам'яті, підтримує операцію резервування пам'яті і виділення зарезервованої пам'яті.
Відповідно, кошти звільнення пам'яті наступні.
Оператор delete звільняє зайнятий додатком блок, але перед цим викликає деструктор об'єкта, якщо змінна об'єктного типу. Нічого, крім параметра, що містить адресу видаляється блоку, передавати не треба.
Функція free () звільняє виділений за допомогою malloc () блок. Слід передати адреса блоку.
У мові C ++ є засоби створення динамічних структур даних, які дозволяють під час виконання програми утворювати об'єкти, виділяти для них пам'ять, звільняти пам'ять, коли в них зникає необхідність.
Якщо до початку роботи з даними неможливо визначити, скільки пам'яті потрібно для їх зберігання, пам'ять слід розподіляти під час виконання програми в міру необхідності окремими блоками. Блоки зв'язуються один з одним за допомогою покажчиків. Такий спосіб організації даних називається динамічною структурою даних, оскільки вона розміщується в динамічної пам'яті і її розмір змінюється під час виконання програми.
Динамічні структури даних - це структури даних, пам'ять під які виділяється і звільняється в міру необхідності.
Динамічні структури даних в процесі існування в пам'яті можуть змінювати не тільки число складових їх елементів, а й характер зв'язків між елементами. При цьому не враховується зміна вмісту самих елементів даних. Така особливість динамічних структур, як несталість їх розміру і характеру відносин між елементами, призводить до того, що на етапі створення машинного коду програма-компілятор не може виділити для всієї структури в цілому ділянку пам'яті фіксованого розміру, а також не може зіставити з окремими компонентами структури конкретні адреси. Для вирішення проблеми адресації динамічних структур даних використовується метод, званий динамічним розподілом пам'яті, тобто пам'ять під окремі елементи виділяється в момент, коли вони починають існувати в процесі виконання програми, а не під час компіляції. Компілятор в цьому випадку виділяє фіксований обсяг пам'яті для зберігання адреси динамічно размещаемого елемента, а не самого елементу.
Необхідність у динамічних структурах даних зазвичай виникає в наступних випадках.
· Використовуються змінні, що мають досить великий розмір (наприклад, масиви великої розмірності), необхідні в одних частинах програми і абсолютно не потрібні в інших.
· У процесі роботи програми потрібен масив, список чи інша структура, розмір якої змінюється в широких межах і важко передбачуваний.
· Коли розмір даних, що обробляються в програмі, перевищує обсяг сегмента даних.
Оскільки елементи динамічної структури розташовуються по непередбачуваним адресами пам'яті, адреса елементу такої структури не може бути обчислений з адреси початкового або попереднього елемента. Для встановлення зв'язку між елементами динамічної структури використовуються покажчики, через які встановлюються явні зв'язки між елементами. Таке уявлення даних у пам'яті називається зв'язковим.
Переваги зв'язкового представлення даних - в можливості забезпечення значною мінливості структур:
· розмір структури обмежується тільки доступним об'ємом машинної пам'яті;
· при зміні логічної послідовності елементів структури потрібно не переміщення даних в пам'яті, а тільки корекція покажчиків;
· більша гнучкість структури.
Разом з тим, зв'язне уявлення не позбавлене і недоліків, основними з яких є наступні:
· на поля, що містять покажчики для зв'язування елементів один з одним, витрачається додаткова пам'ять;
· доступ до елементів зв'язної структури може бути менш ефективним за часом.
Порядок роботи з динамічними структурами даних наступний:
<...