- Главная
- Информатика
- Динамическое распределение памяти

Содержание
- 2. Динамическое распределение памяти Память, которую использует программа делится на три вида: Статическая память (static memory) хранит
- 3. Функции динамического распределения памяти в Си void *malloc(size_t size); Функция выделяет size байтов памяти и возвращает
- 4. Функции динамического распределения памяти в Си void *calloc(size_t num, size_t size); Функция выделяет num объектов размером
- 5. Функции динамического распределения памяти в Си void* realloc(void* ptr, size_t size); Функция позволяет изменить размер ранее
- 7. Скачать презентацию
Слайд 2Динамическое распределение памяти
Память, которую использует программа делится на три вида:
Статическая память (static
Динамическое распределение памяти
Память, которую использует программа делится на три вида:
Статическая память (static

memory)
хранит глобальные переменные и константы;
размер определяется при компиляции.
Стек (stack)
хранит локальные переменные, аргументы функций и промежуточные значения вычислений;
размер определяется при запуске программы (обычно выделяется 4 Мб).
Куча (heap)
динамически распределяемая память;
ОС выделяет память по частям (по мере необходимости).
Динамически распределяемую память используют тогда, если заранее неизвестно, сколько памяти потребуется (например, размер массива, который вводится пользователем), или при работе с большими объемами данных.
хранит глобальные переменные и константы;
размер определяется при компиляции.
Стек (stack)
хранит локальные переменные, аргументы функций и промежуточные значения вычислений;
размер определяется при запуске программы (обычно выделяется 4 Мб).
Куча (heap)
динамически распределяемая память;
ОС выделяет память по частям (по мере необходимости).
Динамически распределяемую память используют тогда, если заранее неизвестно, сколько памяти потребуется (например, размер массива, который вводится пользователем), или при работе с большими объемами данных.
Слайд 3Функции динамического распределения памяти в Си
void *malloc(size_t size);
Функция выделяет size байтов памяти
Функции динамического распределения памяти в Си
void *malloc(size_t size);
Функция выделяет size байтов памяти

и возвращает указатель на неё. Если память выделить не удалось, то функция возвращает NULL. Так как malloc возвращает указатель типа void, то его необходимо явно приводить к нужному нам типу.
int *p = NULL;
p = (int*) malloc(100); //выделено 100 байт
p = (int *) malloc(5*sizeof(int)); //выделена память под 5 intов
free(p);
После окончания работы с выделенной динамически памятью нужно освободить ее. Для этой цели используется функция free, которая возвращает память под управление ОС.
int *p = NULL;
p = (int*) malloc(100); //выделено 100 байт
p = (int *) malloc(5*sizeof(int)); //выделена память под 5 intов
free(p);
После окончания работы с выделенной динамически памятью нужно освободить ее. Для этой цели используется функция free, которая возвращает память под управление ОС.
Слайд 4Функции динамического распределения памяти в Си
void *calloc(size_t num, size_t size);
Функция выделяет num
Функции динамического распределения памяти в Си
void *calloc(size_t num, size_t size);
Функция выделяет num

объектов размером size и заполняет их нулями. Обычно она используется для выделения памяти под массивы. Если память не может быть выделена, возвращается NULL.
int *p = (int *) calloc(10, sizeof(int));
p будет указывать на начало массива из 10 intов, инициализированных нулями.
int *p = (int *) calloc(10, sizeof(int));
p будет указывать на начало массива из 10 intов, инициализированных нулями.
Слайд 5Функции динамического распределения памяти в Си
void* realloc(void* ptr, size_t size);
Функция позволяет изменить
Функции динамического распределения памяти в Си
void* realloc(void* ptr, size_t size);
Функция позволяет изменить

размер ранее выделенной памяти и получает в качестве аргументов старый указатель и новый размер памяти в байтах. Содержание блока памяти сохраняется даже если новый блок имеет меньший размер, чем старый. Отбрасываются только те данные, которые не вместились в новый блок.
Если размер указанный в параметре size больше, чем тот, который был выделен под указатель ptr, то проверяется, есть ли возможность выделить недостающие ячейки памяти подряд с уже выделенными. Если новое значение size больше старого, то содержимое вновь выделенной памяти будет неопределенным. Если места недостаточно, то выделяется новый участок памяти размером size и данные по указателю ptr копируются в начало нового участка.
Если размер указанный в параметре size больше, чем тот, который был выделен под указатель ptr, то проверяется, есть ли возможность выделить недостающие ячейки памяти подряд с уже выделенными. Если новое значение size больше старого, то содержимое вновь выделенной памяти будет неопределенным. Если места недостаточно, то выделяется новый участок памяти размером size и данные по указателю ptr копируются в начало нового участка.
- Предыдущая
Gene Delivery
Презентация на тему Операционные системы на мобильных устройствах
Специальность “Информационные системы”
Приложения дополненной реальности
Основы кибербезопасности. Виды угроз
Классификация персональных компьютеров (какие бывают компьютеры)
Огляд словника: Информатика. Новый систематизированый толковий словарь, Ф.С. Воройського
Информационные технологии в управлении
TeamLead команды SMART
Модули
Пользовательский интерфейс. Компьютер как унивесальное устройство для работы с информацией
Электронная почта. Сетевое коллективное взаимодействие. Сетевой этикет
Презентация на тему Кодирование информации
Бинафон-Н2 - комплекс для выявления каналов утечки речевой информации
Содержательная линия Алгоритмизации и программирования
іт гр 32 урок 2
Adobe Audition Interface
Компьютерные азы
Добро пожаловать. ETHEREUMPRO
Программирование линейных алгоритмов. Начала программирования
Телебачення: погляд у світ
Элементы сайта (тэги)
АВЛ-деревья
Работа с запросами: создание отчетов, получение и обработка массивов данных
Предметно-ориентированный язык
Презентация на тему Мультимедиа технологии в Интернете
Создание подписи и настройка добавления подписи в сообщения Outlookок
Специальное программное обеспечение средств телекоммуникационных технологий
Математические основы информатики. Восьмеричная и шестнадцатеричная системы счисления. Компьютерные системы счисления