Разница между Malloc и New (с таблицей)

Оглавление:

Anonim

Malloc - это функция языка C, тогда как new - фундаментальная функция C ++. По сути, Malloc - это стандартная функция, а new - это оператор. Malloc не следует использовать в C ++ без веской причины. New / delete никогда не следует смешивать с malloc / free. В отличие от malloc, new не требует размера оператора.

Маллок против Нового

Основное различие между malloc () и new () заключается в том, что первая является стандартной функцией C, а вторая - оператором, который можно использовать только в C ++. Malloc можно и нужно использовать в C ++ только тогда, когда для этого есть веская причина. New позволяет переопределить, но malloc не разрешает это юридически.

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

Оператору new не требуется никакой предварительной информации о точном размере оператора, чтобы назначить место для памяти. Оператор new также может вызывать конструктор объекта. Известно, что возникает исключение при нехватке памяти.

Сравнение Malloc и New в табличной форме

Параметры сравнения

Маллок

Новый

Место в языке Malloc чаще используется в C. Реже используется в C ++. New используется только в C ++.
Возврат Он возвращается в ничто. Новый возвращается к правильному типу.
Размер В malloc размер нужно рассчитывать вручную. В New требуемый размер компилятора рассчитывается компилятором.
Переопределение Функцию malloc нельзя переопределить юридически. Новый оператор предоставляет возможность отмены.
Тип Malloc - это стандартная функция C. Он использует такие операторы, как ==, + = и т. Д.
Поведение при нехватке памяти Malloc возвращается к NULL при нехватке памяти. New вызывает исключение при нехватке памяти.
Распределение Функция malloc () должна совпадать с функцией free (). Новый () должен совпадать с удалением ().
Выделяет память для Почти все. Только для массивов, объектов и структур.

Что такое Маллок?

Malloc () - это стандартная библиотечная функция на языке C, обозначающая выделение памяти. Он используется для динамического выделения блока памяти определенного размера. Размер памяти выделяется в байтах. Обычно он возвращает указатель типа void, поскольку он несет какое-то мусорное значение. Он не инициализирует память во время выполнения. Функцию Malloc следует использовать в C ++ только тогда, когда она очень необходима, в противном случае ее использование должно быть ограничено только C. Когда malloc обнаруживает нехватку памяти, он немедленно возвращается к NULL. Он не выполняет инициализацию памяти. Он содержит 2 аргумента. Malloc () всегда должен совпадать с free (). Размер памяти в malloc необходимо рассчитывать вручную. Для выделения размера памяти требуется предварительное знание размера оператора. Он не может вызывать конструктор объекта. Функцию malloc можно использовать для выделения памяти почти для всего. Функция Malloc не позволяет выполнять переопределение на законных основаниях. Malloc работает медленнее, чем новый оператор в C ++, потому что оператор всегда быстрее, чем функция.

Синтаксис: - ptr = (castType *) malloc (size);

Что нового?

New - это оператор в C ++, который нельзя использовать в C. Оператор new может вызывать конструктор объекта и инициализировать память. Конструктор вызывается только после выделения памяти. Размер памяти рассчитывается компилятором. Он возвращается к правильному типу. Он может использовать такие операторы, как ==, + = и т. Д. Оператор new выделяет память только для массивов, объектов и структур. В C ++ новый оператор применяется для отправки запроса на выделение памяти в куче. При условии, что доступно достаточно памяти, оператор new инициализирует его и после этого работает, чтобы вернуть вновь выделенную и сформированную память переменной-указателю. Новый () всегда должен совпадать с удалением (). Этот оператор используется для динамического выделения памяти, создания и уничтожения объектов. Память выделяется для объектов из пула, известного как свободное хранилище. Он работает намного быстрее, чем malloc, поскольку это оператор, а не функция.

Синтаксис: - переменная-указатель = новый тип данных;

Основные различия между Malloc и New

Вывод

Malloc () - это стандартная функция в C, которая также при необходимости используется в C ++. New () - это оператор, использование которого ограничено только C ++. Malloc () должен совпадать с free () и new () с delete (), чтобы он работал правильно. Эти два понятия никогда не должны меняться местами. New намного более продвинутый, чем malloc, поскольку он не требует предварительного знания размера оператора для выделения пространства для памяти, но функция malloc требует этого. Функция malloc не может вызвать конструктор объекта, на который способен новый оператор. Известно, что функция malloc выделяет память практически для всего, но оператор new выделяет память только для массивов, объектов и структур в C ++. Хотя в среднем malloc намного быстрее, чем новый, скорость может варьироваться в зависимости от конкретного вызова. При нехватке памяти malloc возвращается к NULL, тогда как new выдает исключение при ошибке.

использованная литература

Разница между Malloc и New (с таблицей)