Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Управление памятью и указатели

Содержание

Структура памяти программы
Четвертое занятие.Управление памятью и указатели Структура памяти программы То что пока не пригодитсяСегменте данных описывает переменные (выделяется память под глобальные переменные Сегмент стека (Стек)Стек это непрерывная область оперативной памяти организованная по принципу LIFO ОграниченияРазмер данных должен быть известен до компиляцииРазмер стека ограничен (возможно переполнение стека) Динамическая память (heap)структуры данных, с помощью которой реализована динамически распределяемая память приложения Схема выделения памяти в кучеСоздание переменной для хранения адреса (Указатель)Резервирование памятиЗапись адреса начала памяти в Указатель Указатель(англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти Использование& - взятие адреса у переменой* - разыменование (получение значения по адресу)Вопрос: что выведет программа? Осторожность не помешает!Си позволяет легко выстрелить себе в ногу; с C++ это Первый выстрел2147483647 – 2147483392 = 255Результат работы Теперь во вторую ногу Зато веселоРезультат с намеком Работа с памятьюmalloc(N) - выделяет блок памяти, размером N байт, и возвращает Самая важная функцияfree(void* ptr) - освобождает место в памяти. Блок памяти, ранее А иначе плохоУтечка памяти (англ. memory leak) - процесс неконтролируемого уменьшения объёма ПрактикаСредне арифметическое произвольного количества чисел. Динамический двумерный массивПредставляет собой указатель на указатель. ПрактикаОрганизовать не прерывный ввод чисел в массив. Вывести максимальное и минимальное. Домашнее заданиеОрганизовать не прерывный ввод текста в консоль. Найти самое длинное слово и вывести его.
Слайды презентации

Слайд 2
Структура памяти программы

Структура памяти программы

Слайд 3 То что пока не пригодится
Сегменте данных описывает переменные (выделяется

То что пока не пригодитсяСегменте данных описывает переменные (выделяется память под глобальные

память под глобальные переменные и массивы).
Сегмент кода содержит команды

из нашей программы, которые будут исполнятся

Вопрос: почему глобальные массивы и переменные создаются без мусора?

Слайд 4 Сегмент стека (Стек)
Стек это непрерывная область оперативной памяти

Сегмент стека (Стек)Стек это непрерывная область оперативной памяти организованная по принципу

организованная по принципу LIFO (last in — first out,

«последним пришёл — первым вышел»).

Слайд 5
Ограничения
Размер данных должен быть известен до компиляции
Размер стека

ОграниченияРазмер данных должен быть известен до компиляцииРазмер стека ограничен (возможно переполнение стека)

ограничен (возможно переполнение стека)


Слайд 6 Динамическая память (heap)
структуры данных, с помощью которой реализована

Динамическая память (heap)структуры данных, с помощью которой реализована динамически распределяемая память приложения

динамически распределяемая память приложения


Слайд 7 Схема выделения памяти в куче
Создание переменной для хранения

Схема выделения памяти в кучеСоздание переменной для хранения адреса (Указатель)Резервирование памятиЗапись адреса начала памяти в Указатель

адреса (Указатель)
Резервирование памяти
Запись адреса начала памяти в Указатель


Слайд 8 Указатель
(англ. pointer) — переменная, диапазон значений которой состоит

Указатель(англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек

из адресов ячеек памяти или специального значения — нулевого

адреса. Имеет размер разрядности приложения.








#ffff02

#ffff01

#ffff03

#ffff04

#ffff05

#ffff06

#ffff07

Ячейки памяти

Адрес памяти

2

1

3

4

5

6

7

Значение

#ffff04

Указатель

Значение


Слайд 9

Использование
& - взятие адреса у переменой
* - разыменование

Использование& - взятие адреса у переменой* - разыменование (получение значения по адресу)Вопрос: что выведет программа?

(получение значения по адресу)


Вопрос: что выведет программа?


Слайд 10 Осторожность не помешает!
Си позволяет легко выстрелить себе в

Осторожность не помешает!Си позволяет легко выстрелить себе в ногу; с C++

ногу; с C++ это сделать сложнее, но, когда вы

это делаете, вы отстреливаете себе ногу целиком.

Бьярне Строуструп


Слайд 11 Первый выстрел
2147483647 – 2147483392 = 255
Результат работы

Первый выстрел2147483647 – 2147483392 = 255Результат работы

Слайд 12
Теперь во вторую ногу

Теперь во вторую ногу

Слайд 13 Зато весело
Результат с намеком

Зато веселоРезультат с намеком

Слайд 14 Работа с памятью
malloc(N) - выделяет блок памяти, размером

Работа с памятьюmalloc(N) - выделяет блок памяти, размером N байт, и

N байт, и возвращает указатель на начало блока.
realloc(ptr, N)

- выполняет перераспределение блоков памяти. Размер блока памяти, на который ссылается параметр ptr изменяется на N байтов. Блок памяти может уменьшаться или увеличиваться в размере.
calloc(num, size) - выделяет блок памяти для массива размером — num элементов, каждый из которых занимает size байт, и инициализирует все свои биты в нулями.

Слайд 15 Самая важная функция
free(void* ptr) - освобождает место в

Самая важная функцияfree(void* ptr) - освобождает место в памяти. Блок памяти,

памяти. Блок памяти, ранее выделенный с помощью вызова malloc,

calloc или realloc освобождается. То есть освобожденная память может дальше использоваться программами или ОС. ptr – указатель на память которую нужно освободить.

Слайд 16 А иначе плохо
Утечка памяти (англ. memory leak) -

А иначе плохоУтечка памяти (англ. memory leak) - процесс неконтролируемого уменьшения

процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти

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

Слайд 17
Практика
Средне арифметическое произвольного количества чисел.

ПрактикаСредне арифметическое произвольного количества чисел.

Слайд 18

Динамический двумерный массив
Представляет собой указатель на указатель.

Динамический двумерный массивПредставляет собой указатель на указатель.

Слайд 19 Практика
Организовать не прерывный ввод чисел в массив. Вывести

ПрактикаОрганизовать не прерывный ввод чисел в массив. Вывести максимальное и минимальное.

максимальное и минимальное.


  • Имя файла: upravlenie-pamyatyu-i-ukazateli.pptx
  • Количество просмотров: 98
  • Количество скачиваний: 0