Динамическое выделение памяти в C
НАВИГАЦИЯ ПО СТРАНИЦЕ
В языке программирования C для динамического выделения памяти используется функция malloc (или calloc для выделения нулевых байт) и функция realloc для изменения размера ранее выделенного блока. После использования выделенной памяти её следует освободить с помощью функции free. Вот как это работает:
Выделение памяти с помощью malloc :
#include <stdio.h>
#include <stdlib.h>
int main() {
int *dynamicArray; // Объявление указателя на целое число
// Выделение памяти для массива из 10 целых чисел
dynamicArray = (int *)malloc(sizeof(int) * 10);
if (dynamicArray == NULL) {
printf("Ошибка выделения памяти.\n");
return 1; // Выход из программы с ошибкой
}
// Использование выделенной памяти
for (int i = 0; i < 10; i++) {
dynamicArray[i] = i * 2;
}
// Освобождение памяти после использования
free(dynamicArray);
return 0;
}
Выделение нулевой памяти с помощью calloc :
int *dynamicArray;
dynamicArray = (int *)calloc(10, sizeof(int)); // Выделение нулевой памяти для массива из 10 целых чисел
Функция calloc инициализирует выделенную память нулевыми байтами.
Изменение размера выделенного блока с помощью realloc :
int *newDynamicArray = (int *)realloc(dynamicArray, sizeof(int) * 20);
Функция realloc позволяет изменить размер ранее выделенного блока памяти. Она возвращает новый указатель на блок памяти, который может быть изменен по размеру.
Освобождение памяти с помощью free:
free(dynamicArray); // Освобождение ранее выделенной памяти
Важно отметить, что после использования динамически выделенной памяти её необходимо освободить с помощью free
, чтобы избежать утечек памяти. Неосвобожденная память может привести к нежелательным последствиям, таким как переполнение памяти и сбои в работе программы.