Динамическое выделение памяти
Изучите функции malloc, calloc, realloc и free для динамического управления памятью
«Динамическое выделение памяти» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.
Динамическое выделение памяти
Динамическое выделение памяти
В C динамическое выделение памяти позволяет выделять память во время выполнения программы, а не на этапе компиляции.
В этом уроке Вы узнаете:
- Как выделять память с помощью
malloc,callocиrealloc. - Как освобождать выделенную память с помощью
free. - Как избегать утечек памяти.

Что такое динамическое выделение памяти?
Что такое динамическое выделение памяти?
Обычно память для переменных выделяется на этапе компиляции.
При динамическом выделении память выделяется во время выполнения программы с помощью специальных функций.
Это полезно для работы с массивами или структурами, размер которых неизвестен на этапе компиляции.
Выделение памяти с помощью malloc()
Выделение памяти с помощью malloc()
Функция malloc выделяет память, но не инициализирует её.
Синтаксис:
ptr = (int*) malloc(size * sizeof(int));
Она возвращает указатель на выделенную память или NULL, если выделить память не удалось.
Пример: использование malloc()
Пример: использование malloc()
Эта программа демонстрирует, как выделять память с помощью malloc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i * 10;
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}Выделение памяти с помощью calloc()
Выделение памяти с помощью calloc()
Функция calloc выделяет память и инициализирует её нулевыми значениями.
Синтаксис:
ptr = (int*) calloc(num_elements, sizeof(int));
Она возвращает указатель на выделенную память или NULL, если выделить память не удалось.
Пример: использование calloc()
Пример: использование calloc()
Эта программа демонстрирует, как выделять память с помощью calloc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) calloc(5, sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]); // All elements initialized to 0
}
free(ptr);
return 0;
}Изменение размера памяти с помощью realloc()
Изменение размера памяти с помощью realloc()
Функция realloc изменяет размер ранее выделенной памяти.
Синтаксис:
ptr = realloc(ptr, new_size * sizeof(int));
Она возвращает указатель на новый блок памяти.
Освобождение памяти с помощью free()
Освобождение памяти с помощью free()
Выделенную память следует освобождать с помощью free(), чтобы избежать утечек памяти.
Синтаксис:
free(ptr);
После освобождения памяти к указателю нельзя обращаться.
Итоги
Итоги
В этом уроке Вы узнали:
- Как выделять память с помощью
mallocиcalloc. - Как изменять размер выделенной памяти с помощью
realloc. - Как освобождать память с помощью
free, чтобы предотвращать утечки памяти.
Далее мы рассмотрим массивы указателей и указатели на функции в C!

Часто задаваемые вопросы
Урок «Динамическое выделение памяти» бесплатный?
Да — полный текст урока «Динамическое выделение памяти» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.
Чему я научусь в уроке «Динамическое выделение памяти»?
Изучите функции malloc, calloc, realloc и free для динамического управления памятью Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Динамическое выделение памяти»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Знакомство с указателями
- Динамическое выделение памяти
- Массивы указателей и указатели на функции