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

Содержание
- 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
Системы автоматического обзвона и самозаписи пациентов на прием в клинику АО Медицина
Введение в объектноориентированный анализ и проектирование. Лекция 13
Основные понятия и определения (презентация) (1)
Единый портал государственных и муниципальных услуг
Проектирование и разработка web-приложений
Виды информации. Урок 3
Арбитраж трафика
С новым годом. Отчет-поздравление группы Точка доступа в цифровое пространство
Чайковский индустриальный колледж. Макет
Графический редактор
Paint и Paint.NET
Презентация на тему Циклический алгоритм
Основы логики
DIDO Wi Fi (Distributed Input Distributed Output)
History of computer
Презентация на тему Microsoft Office Word
Аттестационная работа по результатам испытательного срока на НПО Криста
Компьютерная графика
Топология сети
Цифровая схемотехника. Системы счисления. Логические элементы
Занятие 1. Понятие об основных законах регулирования. Пропорциональный закон регулирования
Как поставить адресную заявку через ТС QUIK v.7
Большие дни карьеры. Официальный сайт ярмарки вакансий
Решение задач с Роботом
Язык программирования Паскаль
Создание анимации
Аппаратное и программное обеспечение компьютера
Механизм вызова функций для АСУб и ЭВМб. Тема 3-3