Getch();

}

Рис.1. Результат работы программы Пример_2

 

Обратите внимание,что когда вы создаете переменную типа класса, т.е. экземпляр класса (например, A min;, где min – это экземпляр класса), то для этого экземпляра никакой памяти не выделяется. А компилятор все-таки размещает этот экземпляр где-то в памяти. Почему?

Среди исполнения приложений в Си++ выделяют два вида памяти: статическую и динамическую. Последняя носит название «куча» (heap). Куча может быть управляемой и неуправляемой. Если компилятор способен определить размер памяти под объявленную переменную, то он выделяет для нее место в статической памяти (например, под переменную типа int из 10 элементов он выделит 40 байтов). Если компилятор не в состоянии определить размер памяти под объявленную переменную, то он потребует от программиста поместить такую переменную в куче – в динамической памяти. Кстати, если программист сам хочет работать с динамической памятью (даже когда компилятор может поместить переменную в статистической памяти), то язык это ему не позволяет. Для простых переменных при этом используются:

· Функция malloc(), которая выделяет область памяти в динамической области и возвращает указатель на эту область.

· Функция free(), которая освобождает занятую переменной область и передает освобожденную память в общее пользование.

Если же работа происходит с объектами, то здесь используются операторы new – аналог malloc(), и delete – аналог free().

Указанные функции и аналогичные им операторы работают с неуправляемой кучей. С управляемой кучей работает утилита gcnew и нет необходимости освобождать самому

память от объекта, поскольку в этом случае работает так называемая автоматическая сборка мусора: когда объект становится ненужным, память от него освобождается.

Но приведем пример этой же программы (пример_1), в которой используется (по нашему желанию) динамическая память:

 

В данном случае оператор new размещает объект в куче, выдает адрес этого объекта, а конструктор инициализирует объект.

 

Пример_3: //KIIUT.cpp: главный файл проекта.

 

 

#include <iostream.h> //for cout

#include <conio.h> // for _getch()

 








Дата добавления: 2015-07-30; просмотров: 717;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.