Динамическое выделение памяти в C: понимание malloc() с практическими примерами
Что такое malloc() в C?
В стандартной библиотеке C malloc() (memory allocation) динамически резервирует непрерывный блок памяти во время выполнения. Функция возвращает указатель void* на начало блока, который можно привести к любому нужному типу.
Синтаксис
ptr = (cast_type *)malloc(byte_size);
Где:
ptr— указатель указанногоcast_type.byte_size— количество байт для выделения.
Пример:
ptr = (int *)malloc(50);
После вызова выделяется 50 байт, ptr указывает на первый байт.
Практический пример
#include <stdlib.h>
#include <stdio.h>
int main() {
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); // место для 15 int
if (ptr != NULL) {
*(ptr + 5) = 480; // 6-му элементу присваиваем 480
printf("Value of the 6th integer is %d", *(ptr + 5));
}
return 0;
}
Вывод:
Value of the 6th integer is 480
Ключевые моменты
- Использование
sizeof(*ptr)вместоsizeof(int)делает код устойчивым к смене типа указателя. - Если система не может удовлетворить запрос,
malloc()возвращаетNULL; всегда проверяйте указатель перед использованием. - Выделенный блок непрерывен и может использоваться как массив. Арифметика указателей предпочтительнее индексации, чтобы не терять исходный адрес.
malloc() работает с любыми типами — символами, структурами, пользовательскими типами — обеспечивая гибкое управление памятью для C-программистов.
Язык C
- Оператор switch-case в C++: синтаксис, применение и практические примеры
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Указатели в C++: концепции, примеры и практические применения
- Перегрузка операторов в C++: практическое руководство с примерами кода
- Структуры (struct) в C++: объяснение с практическим примером
- std::map в C++: полное руководство с примерами кода
- Освоение std::list в C++: синтаксис, функции и практические примеры
- Функции в C++: подробное объяснение с практическими примерами кода
- calloc() в C: выделение обнулённой памяти и практический пример
- Использование realloc() в C: синтаксис, лучшие практики и пример