С++ malloc()
Функция 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 только выделяет память |