Dynamic Memory Allocation (new and delete) in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Dynamic Memory Allocation (new and delete) in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Dynamic Memory Allocation (new and delete) in C++

C++ рдореЗрдВ Dynamic Memory Allocation (DMA) рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Program рдХреЗ Execution рдХреЗ рджреМрд░рд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ Memory Allocate рддрдерд╛ Release рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред Static Variables рдХреА рддрд░рд╣ Memory Compile Time рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА, рдмрд▓реНрдХрд┐ Runtime рдкрд░ Allocate рд╣реЛрддреА рд╣реИред C++ рдореЗрдВ Dynamic Memory Allocation рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд░реВрдк рд╕реЗ new рддрдерд╛ delete Operators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Dynamic Memory Allocation рдмрдбрд╝реЗ Programs, Data Structures, Object Oriented Programming рддрдерд╛ Runtime рдореЗрдВ Variable Size Data рдХреЛ Handle рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред RGPV B.Tech рдХреА рдкрд░реАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ new Operator, delete Operator, Heap Memory рддрдерд╛ Memory Leak рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред

Program Starts

тЖУ

Memory Required

тЖУ

new Operator

тЖУ

Heap Memory Allocated

тЖУ

delete Operator

тЖУ

Memory Released

Introduction to Dynamic Memory Allocation

рдЬрдм Program рдХреЗ Compile рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдпрд╣ рдЬреНрдЮрд╛рдд рди рд╣реЛ рдХрд┐ рдХрд┐рддрдиреА Memory рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддрдм Runtime рдкрд░ Memory Allocate рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ Dynamic Memory Allocation рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Dynamic Memory Allocation Programmer рдХреЛ Memory рдХрд╛ Efficient рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Memory рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ Allocate рд╣реЛрддреА рд╣реИ рддрдерд╛ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рдЙрд╕реЗ Release рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


What is Dynamic Memory?

Dynamic Memory рд╡рд╣ Memory рд╣реЛрддреА рд╣реИ рдЬреЛ Program рдХреЗ Execution рдХреЗ рджреМрд░рд╛рди Allocate рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ Memory рд╕рд╛рдорд╛рдиреНрдпрддрдГ Heap Memory рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИ рддрдерд╛ рдЗрд╕рдХрд╛ Allocation рдФрд░ Deallocation Programmer рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


Need of Dynamic Memory Allocation

  • Runtime рдкрд░ Memory Allocate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Variable Size Data рдХреЛ Store рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Memory рдХрд╛ Efficient рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Large Data Structures рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Linked List, Tree рддрдерд╛ Graph рдЬреИрд╕реА Structures рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Dynamic Arrays рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Object Oriented Programming рдореЗрдВ Dynamic Objects рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Memory Wastage рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Static Memory vs Dynamic Memory

Static Memory Dynamic Memory
Compile Time рдкрд░ Allocate рд╣реЛрддреА рд╣реИред Runtime рдкрд░ Allocate рд╣реЛрддреА рд╣реИред
Size рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИред Size Runtime рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
Stack Memory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред Heap Memory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
Automatic Deallocation рд╣реЛрддрд╛ рд╣реИред Programmer рдХреЛ delete рджреНрд╡рд╛рд░рд╛ Release рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

Heap Memory

Heap Memory рд╡рд╣ Memory Area рд╣реИ рдЬрд╣рд╛рдБ Dynamic Memory Allocate рд╣реЛрддреА рд╣реИред Heap Memory рдХрд╛ Allocation рдПрд╡рдВ Deallocation Programmer рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ Allocated Memory рдХреЛ рд╕рдордп рдкрд░ Release рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рддреЛ Program рдореЗрдВ Memory Leak рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


Stack Memory

Stack Memory Local Variables, Function Calls рддрдерд╛ Automatic Variables рдХреЛ Store рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред Function рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Stack Memory рд╕реНрд╡рддрдГ Release рд╣реЛ рдЬрд╛рддреА рд╣реИред


Difference between Heap Memory and Stack Memory

Stack Memory Heap Memory
Automatic Memory Management Manual Memory Management
Fast Access Relatively Slow Access
Function Calls рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА Dynamic Allocation рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
Limited Size Large Size Available

new Operator

new Operator рдХрд╛ рдЙрдкрдпреЛрдЧ Runtime рдкрд░ Heap Memory рд╕реЗ Memory Allocate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ Memory Allocate рдХрд░рдХреЗ рдЙрд╕рдХрд╛ Address Return рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдГ Pointer Variable рдореЗрдВ Store рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


Syntax of new Operator

data_type *pointer; pointer = new data_type;

рдКрдкрд░ рджрд┐рдП рдЧрдП Syntax рдореЗрдВ new Operator Heap Memory рдореЗрдВ рдПрдХ Variable рдХреЗ рд▓рд┐рдП Memory Allocate рдХрд░рддрд╛ рд╣реИ рддрдерд╛ рдЙрд╕рдХрд╛ Address Pointer Variable рдореЗрдВ Store рдХрд░рддрд╛ рд╣реИред


delete Operator

delete Operator рдХрд╛ рдЙрдкрдпреЛрдЧ new Operator рджреНрд╡рд╛рд░рд╛ Allocate рдХреА рдЧрдИ Memory рдХреЛ Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ Memory рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реЗ Release рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рддреЛ Program рдореЗрдВ Memory Leak рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

Dynamic Memory рдХрд╛ рдЙрдЪрд┐рдд Management рдХрд┐рд╕реА рднреА Efficient Program рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬрд┐рд╕ Memory рдХреЛ new рджреНрд╡рд╛рд░рд╛ Allocate рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЙрд╕реЗ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ delete рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╢реНрдп Release рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


Syntax of delete Operator

delete pointer;

рдпрджрд┐ Dynamic Array Allocate рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рддреЛ рдЙрд╕реЗ Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП delete[] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

delete[] pointer;

Allocating a Single Variable Dynamically

рдХрд┐рд╕реА рдПрдХ Variable рдХреЗ рд▓рд┐рдП Runtime рдкрд░ Memory Allocate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП new Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

int *ptr; ptr = new int; *ptr = 50;

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ptr Heap Memory рдореЗрдВ Allocate рдХрд┐рдП рдЧрдП Integer Variable рдХрд╛ Address Store рдХрд░рддрд╛ рд╣реИред


Allocating Arrays Dynamically

рдпрджрд┐ Program рдХреЗ Execution рдХреЗ рджреМрд░рд╛рди Array рдХрд╛ Size рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛ, рддреЛ Dynamic Array рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

int size = 10; int *arr = new int[size];

Dynamic Array рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Memory рдХреЛ Release рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди Statement рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

delete[] arr;

Allocating Objects Dynamically

C++ рдореЗрдВ Objects рдХреЛ рднреА Runtime рдкрд░ Dynamically Create рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ Object Oriented Programming рддрдерд╛ Large Applications рдореЗрдВ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред

Student *obj; obj = new Student;

Dynamic Object рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -> Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

obj->marks = 90;

Dynamic Memory with Classes

Class рдХреЗ Objects рдХреЛ Dynamic Memory рдореЗрдВ Store рдХрд░рдиреЗ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ Objects Create рдПрд╡рдВ Destroy рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ Technique Banking Software, Student Management System рддрдерд╛ Game Development рдЬреИрд╕реА Applications рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред


Memory Leak

рдЬрдм Program new Operator рджреНрд╡рд╛рд░рд╛ Memory Allocate рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕реЗ delete рджреНрд╡рд╛рд░рд╛ Release рдирд╣реАрдВ рдХрд░рддрд╛, рддрдм Heap Memory рд▓рдЧрд╛рддрд╛рд░ Occupied рд░рд╣рддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ Memory Leak рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

new

тЖУ

Memory Allocated

тЖУ

delete Not Used

тЖУ

Memory Leak

Dangling Pointer

рдпрджрд┐ рдХрд┐рд╕реА Pointer рджреНрд╡рд╛рд░рд╛ Refer рдХреА рдЬрд╛ рд░рд╣реА Memory рдХреЛ delete рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рд▓реЗрдХрд┐рди Pointer рдореЗрдВ рдЕрднреА рднреА рд╡рд╣реА рдкреБрд░рд╛рдирд╛ Address рдореМрдЬреВрдж рд░рд╣реЗ, рддреЛ рдРрд╕реЗ Pointer рдХреЛ Dangling Pointer рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

delete ptr; ptr = NULL;

Memory Release рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Pointer рдХреЛ NULL рдпрд╛ nullptr рдкрд░ Set рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА Programming Practice рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред


Best Practices while Using Dynamic Memory

  • рдЬрд┐рд╕ Memory рдХреЛ new рд╕реЗ Allocate рдХрд░реЗрдВ, рдЙрд╕реЗ рд╣рдореЗрд╢рд╛ delete рд╕реЗ Release рдХрд░реЗрдВред
  • Dynamic Array рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ delete[] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • Memory Release рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Pointer рдХреЛ NULL рдпрд╛ nullptr рдкрд░ Set рдХрд░реЗрдВред
  • рдЕрдирд╛рд╡рд╢реНрдпрдХ Dynamic Allocation рд╕реЗ рдмрдЪреЗрдВред
  • Memory Leak рддрдерд╛ Dangling Pointer рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд Memory Management рдЕрдкрдирд╛рдПрдБред
  • рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ, Modern C++ рдореЗрдВ Smart Pointers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

Difference between new/delete and malloc()/free()

new / delete malloc() / free()
C++ Operators рд╣реИрдВред C Library Functions рд╣реИрдВред
Constructor рдПрд╡рдВ Destructor Automatically Call рд╣реЛрддреЗ рд╣реИрдВред Constructor рддрдерд╛ Destructor Call рдирд╣реАрдВ рд╣реЛрддреЗред
Type Casting рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред Type Casting рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
Object Oriented Programming рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрддред рдореБрдЦреНрдпрддрдГ C Language рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Program to Allocate a Single Variable Dynamically

#include<iostream> using namespace std; int main() { int *ptr; ptr = new int; *ptr = 100; cout << "Value = " << *ptr; delete ptr; return 0; }

рдЗрд╕ Program рдореЗрдВ new Operator Heap Memory рдореЗрдВ рдПрдХ Integer Variable рдХреЗ рд▓рд┐рдП Memory Allocate рдХрд░рддрд╛ рд╣реИред Pointer ptr рдЙрд╕ Memory рдХрд╛ Address Store рдХрд░рддрд╛ рд╣реИ рддрдерд╛ рдЕрдВрдд рдореЗрдВ delete рджреНрд╡рд╛рд░рд╛ Memory Release рдХрд░ рджреА рдЬрд╛рддреА рд╣реИред


Program to Allocate an Array Dynamically

#include<iostream> using namespace std; int main() { int n = 5; int *arr = new int[n]; for(int i=0;i<n;i++) { arr[i] = (i+1)*10; } for(int i=0;i<n;i++) { cout << arr[i] << " "; } delete[] arr; return 0; }

рдпрд╣ Program Runtime рдкрд░ Dynamic Array рдмрдирд╛рддрд╛ рд╣реИред Array рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж delete[] рджреНрд╡рд╛рд░рд╛ Heap Memory Release рдХреА рдЬрд╛рддреА рд╣реИред


Program to Create Object Dynamically

#include<iostream> using namespace std; class Student { public: int marks; }; int main() { Student *obj = new Student; obj->marks = 95; cout << "Marks = " << obj->marks; delete obj; return 0; }

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Class рдХрд╛ Object Runtime рдкрд░ Create рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Object рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -> Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрдерд╛ рдЕрдВрдд рдореЗрдВ Memory Release рдХрд░ рджреА рдЧрдИ рд╣реИред


Real Life Applications of Dynamic Memory Allocation

Application Description
Linked List Nodes Runtime рдкрд░ Create рдПрд╡рдВ Delete рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
Tree Data Structure Hierarchy рдХреЗ рдЕрдиреБрд╕рд╛рд░ Dynamic Nodes Allocate рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
Graph Applications Dynamic Vertices рддрдерд╛ Edges рдХреЗ рд▓рд┐рдП Memory Allocate рдХреА рдЬрд╛рддреА рд╣реИред
Game Development Characters, Objects рддрдерд╛ Resources Runtime рдкрд░ Create рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
Database Management System Records рддрдерд╛ Buffers рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ Memory Allocate рд╣реЛрддреА рд╣реИред
Operating System Process рддрдерд╛ Memory Management рдореЗрдВ Dynamic Allocation рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Advantages of Dynamic Memory Allocation

  • Runtime рдкрд░ Memory Allocate рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
  • Memory Wastage рдХрдо рд╣реЛрддреА рд╣реИред
  • Variable Size Data рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ Handle рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • Large Data Structures рдХреЛ Efficient рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • Object Oriented Programming рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реИред
  • Program рдЕрдзрд┐рдХ Flexible рдПрд╡рдВ Scalable рдмрдирддрд╛ рд╣реИред
  • Memory рдХрд╛ Efficient Utilization рд╣реЛрддрд╛ рд╣реИред
  • Dynamic Applications рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

Disadvantages of Dynamic Memory Allocation

  • Improper Memory Management рд╕реЗ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • Dangling Pointer рдХреА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред
  • Heap Allocation Stack рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИред
  • Manual Memory Management рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рдЧрд▓рдд Pointer Handling рд╕реЗ Runtime Errors рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

Viva Questions

  1. What is Dynamic Memory Allocation?
  2. What is Heap Memory?
  3. Differentiate between Heap Memory and Stack Memory.
  4. What is the use of the new Operator?
  5. What is the use of the delete Operator?
  6. What is a Memory Leak?
  7. What is a Dangling Pointer?
  8. Why is delete[] used for Arrays?
  9. Differentiate between new/delete and malloc()/free().
  10. Give any two applications of Dynamic Memory Allocation.

Exam Oriented Important Questions

  1. Define Dynamic Memory Allocation with suitable example.
  2. Explain the working of new and delete Operators.
  3. Differentiate between Static Memory and Dynamic Memory.
  4. Differentiate between Heap Memory and Stack Memory.
  5. Write a C++ Program to Allocate Memory Dynamically.
  6. Write a Program to Create Dynamic Arrays using new.
  7. Explain Memory Leak and Dangling Pointer.
  8. Differentiate between new/delete and malloc()/free().
  9. Discuss the advantages and disadvantages of Dynamic Memory Allocation.
  10. Explain the real-life applications of Dynamic Memory Allocation.

Conclusion

Dynamic Memory Allocation (DMA) C++ рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИ рдЬреЛ Program рдХреЛ Runtime рдкрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ Memory Allocate рдПрд╡рдВ Release рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред new Operator Heap Memory рд╕реЗ Memory Allocate рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ delete Operator рдЙрд╕ Memory рдХреЛ Release рдХрд░рддрд╛ рд╣реИред рдЙрдЪрд┐рдд Memory Management рджреНрд╡рд╛рд░рд╛ Memory Leak рддрдерд╛ Dangling Pointer рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Dynamic Memory Allocation Linked List, Tree, Graph, Database Systems, Operating System рддрдерд╛ Object Oriented Programming рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RGPV B.Tech First Year рдХреЗ рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ Topic Theory, Practical, Viva рддрдерд╛ University Examination рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

Related Articles

Manipulators in C++ Notes | endl, setw, setprecision, setfill | Basic Computer Engineering | RGPV BTech First Year

0...

Read More тЖТ

Type Conversion in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Type Co...

Read More тЖТ

Assignment Operator in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Assignm...

Read More тЖТ

Copy Constructor in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Copy Co...

Read More тЖТ

this Pointer in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

this Po...

Read More тЖТ