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

ВНИМАНИЕ. Обнуления памяти при ее выделении не происходит

Читайте также:
  1. II. Прочитайте и переведите предложения, обращая внимание употребление эквивалентов модальных глаголов. Где возможно замените эквивалент подходящим по смыслу модальным глаголом.
  2. III. Прочитайте и переведите предложения, обращая внимание на употребление герундия. Укажите, какую функцию он выполняет в предложении.
  3. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  4. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  5. IV. Перепишите и переведите предложения, обращая внимание на употребление инфинитивной конструкции Сложное подлежащее (The Complex Subject).
  6. IV. Перепишите и переведите предложения, обращая внимание на употребление модальных глаголов. Подчеркните модальные глаголы в английских предложениях и в переводе.
  7. IV. Перепишите и переведите предложения, обращая внимание на употребление модальных глаголов. Подчеркните модальные глаголы в английских предложениях и в переводе.

Обнуления памяти при ее выделении не происходит. Инициализировать динамический массив нельзя.

Обращение к элементу динамического массива осуществляется так же, как и к эле­менту обычного — например а[3]. Можно обратиться к элементу массива и другим способом — *(а + 3). В этом случае мы явно задаем те же действия, что выполня­ются при обращении к элементу массива обычным образом. Рассмотрим их подробнее
В переменной-указателе а хранится адрес начала массива (имя статического массива также является указателем на его первый элемент, только константным, то есть ему нельзя присвоить новое значение). Для получения адреса третьего элемента к этому адресу прибавляется смещение 3. Операция сло­жения с константой для указателей учитывает размер адресуемых элементов, то есть на самом деле индекс умножается на длину элемента массива: а + 3 * sizeof(int). Затем с помощью операции * (разадресации) выполняется выборка значения из указанной области памяти.

Если динамический массив в какой-то момент работы программы перестает быть нужным и мы собираемся впоследствии использовать эту память повторно, необ­ходимо освободить ее с помощью операции de1ete[], например: delete [] а:

Размерность массива при этом не указывается.

ВНИМАНИЕ -

Квадратные скобки в операции delete [] при освобождении памяти из-под массива обяза­тельны. Их отсутствие может привести к неопределенному поведению программы. Память, выделенную с помощью mal loc, следует освобождать посредством функции free.

Таким образом, время жизни динамического массива, как и любой динамической переменной, — с момента выделения памяти до момента ее освобождения. Область действия зависит от места описания указателя, через который производится рабо­та с массивом. Область действия и время жизни указателей подчиняются общим правилам, рассмотренным лекции. Как вы помните, локальная пере­менная при выходе из блока, в котором она описана, «теряется». Если эта перемен­ная является указателем и в ней хранится адрес выделенной динамической памя­ти, при выходе из блока эта память перестает быть доступной, однако не помечается как свободная, поэтому не может быть использована в дальнейшем. Это называет­ся утечкой памяти и является распространенной ошибкой:


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


<== предыдущая страница | следующая страница ==>
Задача 1. Количество элементов между минимумом и максимумом| Задача 2. Сумма элементов правее последнего отрицательного

mybiblioteka.su - 2015-2024 год. (0.007 сек.)