ВУЗ:
Составители:
Рубрика:
int *R=0;
Динамические переменные
Все переменные, объявленные в программе, размещаются в одной
непрерывной области памяти, которую называют сегментом данных
(64 Кб). Такие переменные не меняют своего размера в ходе выполне-
ния программы и называются статическими. Размера сегмента данных
может быть недостаточно для размещения больших массивов информа-
ции. Выходом из этой ситуации является использование динамической
памяти. Динамическая память – это память, выделяемая программе для
ее работы за вычетом сегмента данных, стека, в котором размещаются
локальные переменные подпрограмм и собственно тела программы.
Для работы с динамической памятью используют указатели. С их
помощью осуществляется доступ к участкам динамической памяти, ко-
торые называются динамическими переменными. Динамические пере-
менные создаются с помощью специальных функций и операций. Они
существуют либо до конца работы программ, либо до тех пор, пока
не будут уничтожены с помощью специальных функций или операций.
Для создания динамических переменных используют операцию
new, определенную в C++:
указатель = new имя_типа[инициализатор];
где инициализатор – выражение в круглых скобках.
Операция new позволяет выделить и сделать доступным участок
динамической памяти, который соответствует заданному типу данных.
Если задан инициализатор, то в этот участок будет занесено значение,
указанное в инициализаторе:
int*x=new int(5);
Для удаления динамических переменных используется операция
delete, определенная в C++:
delete указатель;
где указатель содержит адрес участка памяти, ранее выделенный с по-
мощью операции new:
delete x;
В языке C определены библиотечные функции для работы с дина-
мической памятью, они находятся в библиотеке <stdlib.h>:
1) void*malloc (unsigned s) – возвращает указатель на начало обла-
сти динамической памяти длиной s байт, при неудачном завершении
возвращает NULL;
2) void*calloc (unsigned n, unsigned m) – возвращает указатель на
начало области динамической для размещения n элементов длиной m
байт каждый, при неудачном завершении возвращает NULL;
145
Страницы
- « первая
- ‹ предыдущая
- …
- 143
- 144
- 145
- 146
- 147
- …
- следующая ›
- последняя »
