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

Содержание
- 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
Shriv ComMedia Solution Services IOT services embedded programming & Research remote infrastructure management services
Доспехи песен войн
Проектирование информационных систем (ИС). Нормативная база. Модели качества ПО ИС
Бизнес сеть. Решение для строительной эко системы
Аналіз трактування медіаосвіти науковцями
Создание веб-сайтов
Логические основы работы компьютера
Строки. Практика
Управление исполнителем Чертёжник
Технологические операторы, рассчитывающие паро-жидкостное равновесие в системе
Словарь терминов и сленга. Игры Genshin Impact
Relative Strength Index
Ситуація: У вас є флешка обсягом 2 Гб. Вам потрібно терміново перенести інформацію об'ємом 2,5 Гб на інший комп'ютер. Ваші дії?
Программирование цикла. Алгоритм Евклида
Проект Преврати путешествие в киноленту
IBD_Ischenko10B
Введение в систему Wolfram Language (Mathematica)
Вирусы и антивирусные программы
Искусственный интеллект в системе управления электроприводом
Решу ЕГЭ. Образовательный портал для подготовки к экзаменам
Сводка, группировка, ряд распределения
Huffman coding (student’s supervised self study work)
Физические основы компьютерной графики. Зрение, спектр, цвет, свет, цветовые модели. Лекция №2
Грантовый конкурс патриотических проектов для физических лиц. Онлайн-семинар
Презентация на тему Устройства ввода информации
Правила оформления информационных источников в работе. 10 класс
Процедурное программирование 01_09_2021
Элементы алгебры логики. Математические основы информатики