delete и free () в C ++
Опубликовано: 1 Января, 2022
В C ++ оператор удаления следует использовать только для указателей, указывающих на память, выделенную с помощью оператора new, или для указателя NULL, а free () следует использовать только для указателей, указывающих на память, выделенную с помощью malloc (), или для указатель NULL.
Самая важная причина, по которой free () не следует использовать для освобождения памяти, выделенной с помощью NEW, заключается в том, что он не вызывает деструктор этого объекта, в то время как оператор удаления делает.
CPP
#include<stdio.h> #include<stdlib.h> int main() { int x; int *ptr1 = &x; int *ptr2 = ( int *) malloc ( sizeof ( int )); int *ptr3 = new int ; int *ptr4 = NULL; /* delete Should NOT be used like below because x is allocated on stack frame */ delete ptr1; /* delete Should NOT be used like below because x is allocated using malloc() */ delete ptr2; /* Correct uses of delete */ delete ptr3; delete ptr4; getchar (); return 0; } |
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .