c delete



C new delete

Автор Tvo9_tesha Петрушка_Керосиновая задал вопрос в разделе Другие языки и технологии

чем отличается free от delete[ ] C++ и получил лучший ответ

Ответ от Николай Веселуха[гуру]
delete вызывает деструктор, free этого делать не умеет.

Ответ от Анатолий Широков[активный]
free пара к malloc/calloc, delete пара к new, delete [] пара к new [] и смешивать их UB

Ответ от Mr. Nobody[гуру]
free осталось от языка C, используется с функциями calloc, malloc, realloc. Оператор delete следует использовать с оператором new ("оператор" - неправильный перевод английского слова "operator", лучше перевести "операция"
delete вызывает деструктор, free нет. Поэтому использовать пару malloc/free для классов нельзя (+malloc не вызывает конструктор, к тому же, и не разбирается с виртуальными методами) . Вполне допустимо в коде использовать для классов пару new/delete, а для простых переменных - malloc/free. Только зачем, new/delete может работать как с классами, так и с обычными переменными. а) нельзя удалить память, выделенную оператором new, с помощью free, можно только с помощью delete;б) нельзя удалить память, выделенную оператором malloc, с помощью delete, можно только с пом, free;в) delete гибче.
г) при работе с пользовательскими типами оператор delete можно перегрузить в соответствии с текущей необходимостью, а функция free такой возможности не предоставляет.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: чем отличается free от delete[ ] C++
Delete C++ на Википедии
Посмотрите статью на википедии про Delete C++
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*