русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции new и delete


Дата добавления: 2015-07-09; просмотров: 468; Нарушение авторских прав


Я тебя породил, я тебя и убью!

Н.В.Гоголь. Тарас Бульба

Операции:

<указатель> = new <имя типа>

либо

<указатель> = new <имя типа>( <инициализатор>)

позволяют выделить и сделать доступным свободный участок в основ­ной памяти, размеры которого соответствуют типу данных, опреде­ляемому именем типа. В выделенный участок заносится значение, определяемое инициализатором, который не является обязательным элементом. В случае успешного выполнения операцияnew возвращает адрес начала выделенного участка памяти. Если участок нужных раз­меров не может быть выделен (нет памяти), то операцияnew возвра­щает нулевое значение адреса (NULL).

Здесь необязательный инициализатор - это выражение в круглых скобках, значением которого заполняется выделенная область памяти. Указатель, которому присваивается получаемое значение адреса, должен относиться к тому же типу данных, что и имя_типа в операцииnew. Примеры:

· операция new float выделяет участок памяти размером 4 байта;

· операция new int(l5) выделяет участок памяти в 2 байта и инициа­лизирует этот участок целым значением 15.

Напомним, что определение указателя имеет вид: тип *<имя указателя>; .Имя указателя - это идентификатор. Таким образом, int *h; - определение указателя h, который может быть связан с участком памяти, выделенным для ве­личины целого типа. Введя с помощью определения указатель, можно присвоить ему возвращаемое операциейnew значение:

h = new int(15);.

В дальнейшем доступ к выделенному участку памяти обеспечивает выражение *h.

В случае отсутствия в операцииnew инициализатора значение, которое заносится в выделенный участок памяти, не определено. Если в качестве имени типа в операцииnew используется массив, то для массива должны быть полностью определены все размерности. Инициализация участка памяти, выделяемого для мас­сива, запрещена.



Продолжительность существования, выделенного с помощью операции new участка памяти - от точки создания до конца программы или до явного его освобождения.

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

delete <указатель>; , где

указатель адресует освобождаемый участок памяти, ранее выделенный с помощью операции new. Например: delete h; освободит участок па­мяти, связанный с указателем h. Повторное применение операции delete к тому же указателю дает неопределенный результат.

Для освобождения памяти, выделенной для массива, используется следующая модификация того же оператора: delete[ ] <указатель>;, где указатель связан с выделенным для массива участком памяти.

 

Демонстрационные примеры



<== предыдущая лекция | следующая лекция ==>
Адресная арифметика | Б.Керниган, Ф.Плоджер


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.586 сек.