Презентация "Реализация цикла с помощью класса с заданным шагом инкремента на Java"

Подписи к слайдам:
Указатели в C++

Любви и обожания тема

ФИО автора: Трофимов Виктор Геннадьевич

Место работы: ГКООУ санаторная школа-интернат №28 г. Ростова-на-Дону

Должность: учитель информатики и ИКТ

  • При объявлении переменных или массивов выделяется фиксированная неизменная область памяти.
  • Чтобы получить доступ к всей памяти компьютера, нужно применять указатель - переменную, которая указывает на область памяти. Указатель хранит сведения о расположении других данных (их адрес).
  • Указатель - особый тип переменной, указывающей на область памяти.
  • Также под термином «указатель» понимается:
  • 1) сам адрес памяти;
  • 2) переменная, которая хранит адрес памяти.
Для хранения значений переменных различают два вида памяти:
  • Для хранения значений переменных различают два вида памяти:
  • 1. Стек (stack) - первичная память, в которой хранятся значения переменных. Строго ограничена и фиксирована.
  • 2. Свободное хранилище, «куча» (heap) - свободная память, которую предоставляет для работы программы операционная система.

Стек (Stack)

Размер в С++

1 Мб. по умолчанию

Свободное хранилище (Heap, «куча»)

Оперативная память за исключением служебных областей

8 Гб.

1 Мб.

Когда память перестаёт быть нужной, её следует возвращать, т.е. удалять указатели, иначе возникает т.н. «утечка памяти».
  • Когда память перестаёт быть нужной, её следует возвращать, т.е. удалять указатели, иначе возникает т.н. «утечка памяти».
  • Утечка памяти (memory leak) — процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками системных служб контроля памяти.
Табу: нельзя вносить изменения в память, владельцем которой вы не являетесь!
  • Табу: нельзя вносить изменения в память, владельцем которой вы не являетесь!
  • Упрощённо:
  • 1. Выделение памяти в «куче».
  • 2. Использование памяти.
  • 3. Удаление указателя.
  • Преимущества указателей:
  • 1. Данные в памяти могут иметь сложную структуру, и их трудно копировать без ошибок, или копирование требует много времени (если объем памяти велик).
  • 2. Указатель на память позволяет считать самое новое значение, которое хранится по этому адресу.
  • 3. Позволяет возвращать множество результатов выполнения функции (метода).
  • Недостатки указателей (ссылок):
  • 1. Память может быть возвращена операционной системе, даже если указатель на нее существует. Во избежание проблемы нужно отслеживать, используется ли она кем-либо.
  • 2. Трудность с пониманием и отслеживанием связей между указателями (нужно много практики).
  • Го тест!
  • Правильные ответы:
  • 1. Г
  • 2. Г
  • 3. В
  • 4. Г
  • 5. Б
  • 6. Б
Тест
  • 1. Что из нижеперечисленного НЕ является веской причиной для использования указателей?
  • А. Вы хотите, чтобы функция изменяла переданный ей аргумент.
  • Б. Вы хотите сэкономить место, избегая копирования переменной большого размера.
  • В. Вы хотите иметь возможность запрашивать у операционной системы дополнительную память.
  • Г. Вы хотите быстрее получать доступ к переменным.
  •  
  • 2. Что хранит указатель?
  • А. Имя другой переменной.
  • Б. Целое значение.
  • В. Адрес другой переменной в памяти.
  • Г. Адрес в памяти, необязательно относящийся к другой переменной.
  •  
  • 3. Как получить дополнительную память в процессе выполнения программы?
  • А. Вы не можете получить дополнительную память.
  • Б. В стеке.
  • В. В свободном хранилище.
  • Г. Объявив другую переменную.
  •  
  • 4. Какую ошибку можно допустить при использовании указателей?
  • А. Вы можете попытаться воспользоваться памятью, доступ к которой запрещен, что приведет к аварийному завершению программы.
  • Б. Вы можете получить доступ к некорректному адресу памяти, что приведет к повреждению данных.
  • В. Вы можете забыть вернуть память операционной системе, что приведет к исчерпанию памяти.
  • Г. Вы можете допустить все вышеперечисленные ошибки.
  •  
  • 5. Где выделяется память для обычной переменной, объявленной в функции?
  • А. В свободном хранилище.
  • Б. В стеке.
  • В. Обычные переменные не используют память.
  • Г. В двоичном файле программы (именно поэтому exe-файлы такие большие!).
  •  
  • 6. Что необходимо сделать с выделенной памятью?
  • А. Ничего, ее можно использовать бесконечно.
  • Б. Вернуть ее операционной системе по окончании использования.
  • В. Задать значение, на которое указывает указатель, равным нулю.
  • Г. Присвоить указателю нулевое значение.