Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лекция 7. Динамическое распределение памяти в языке С++






(Дополнительная)

Динамическое распределение памяти в языке С++

 

Основные вопросы лекции

1. Динамическая память – операторы new и delete;

2. Выделение динамической памяти для массивов.

1. Динамическая память – операторы new и delete – для переменных

Динамическое выделение памяти необходимо для эффективного использования памяти компьютера.

В С++ для динамического распределения памяти компьютера предназначены операторы new и delete. Оператор new выделяет память из области свободной памяти, а оператор delete высвобождает выделенную память. Выделяемая память после её использования должна высвобождаться, поэтому операторы new и delete желательно использовать совместно.

Если не высвобождать память явно, то она освободится ресурсами ОС по завершению работы программы.

Предположим, что необходимо пространство для переменной типа double. Можно определить указатель на тип double и затем запрашивать память во время выполнения. Для этого используют операцию new в следующих операторах:

 

doublе* pА=Null;

pА=new doublе;

 

Первый оператор следует правилу, что если указатель не содержит корректного значения адреса, то он устанавливается в 0, т.е. это своего рода резервирование указателя.

Операция new во второй строке приведенного выше кода должна вернуть адрес памяти из свободного хранилища, выделенный для размещения переменной типа doublе, и этот адрес сохраняется в рА. Затем возможно применение этого указателя для ссылки на переменную, используя операцию разыменования:

 

*pА=999, 9.

 

Оператор new можно записать следующим образом:

 

Тип *pА=new Тип,

 

где – указатель на выделенный участок памяти типа Тип;

new – операция выделения свободной памяти под создаваемый объект (переменную, массив и т.д.).

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

Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных: int, float, double, char и т. д.

Оператор delete записывается следующим образом:

 

delete pА,

 

где – указатель на выделенный участок памяти;

delete – операция высвобождения памяти.

 

Можно сразу инициализировать переменную оператором new при ее создании. Для этого используется следующая форма применения данного оператора:

 

 

Разработаем следующую программу, в которой будет выделяться динамическая память под переменную:

 

#include " stdafx.h"

#include < conio.h>

#include " iostream"






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.