С++ malloc()

Опубликовано: 7 Января, 2023

Функция malloc() в C++ используется для выделения запрошенного размера байтов и возвращает указатель на первый байт выделенной памяти. malloc() в C++ — это функция, которая выделяет память во время выполнения, следовательно, malloc() — это метод динамического выделения памяти. В случае неудачи он возвращает нулевой указатель.

Синтаксис:

pointer_name = (cast-type*) malloc(size);

Здесь, size — целочисленное значение без знака (приведенное к size_t), которое представляет блок памяти в байтах.

malloc() в С++ выделяет блок размером байт памяти, возвращая указатель на начало блока. Содержимое вновь выделенного блока памяти не инициализируется, оставаясь с неопределенными значениями. Функция malloc присутствует в заголовочном файле <cstdlib>.

Типы возврата malloc()

Если размер равен нулю, возвращаемое значение зависит от конкретной реализации библиотеки (это может быть или не быть нулевым указателем ), но возвращаемый указатель не должен разыменовываться.

  • указатель void используется для неинициализированного блока памяти, который выделяется функцией
  • нулевой указатель , если выделение не удалось

Работа и выделение блоков памяти с помощью malloc()

Пример 1:

свободно() функция в C++ используется для динамического освобождения памяти.

Пример 2:

Выход:

Где следует использовать Malloc?

1. Динамическое выделение памяти

Динамическое выделение памяти помогает нам выделить часть памяти в соответствии с требованиями пользователя. Он возвращает указатель на начало этой памяти, с которым можно обращаться аналогично массиву.

2. Куча памяти

malloc() выделяет место памяти в куче и возвращает указатель на стек, указывающий на начальный адрес выделяемой памяти типа массива, тогда как размер статического массива устанавливает жесткий верхний предел того, сколько данных программа может обработать в любой момент. время без перекомпиляции.

3. Лучший срок службы

Переменные или массивы, созданные с помощью malloc, существуют всю жизнь, пока не будут очищены. Это имеет большое значение для различных структур данных, таких как связанные списки, двоичная куча и т. д.

Разница между new и malloc()

новый маллок
новый оператор malloc() — это функция
новые конструкторы вызовов malloc() не вызывает конструкторы
new возвращает точный тип данных malloc() возвращает пустоту*
new никогда не возвращает NULL (будет брошен в случае неудачи) malloc() возвращает NULL
Перераспределение памяти не обрабатывается new Перераспределение памяти может быть обработано malloc
new выделяет память и вызывает конструктор malloc только выделяет память
C++