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 и многому другому, см. Полный курс подготовки к собеседованию .
C++ C