14.CPP-Notes-Part-14-Pointers&MemoryManagement
14.CPP-Notes-Part-14-Pointers&MemoryManagement
C++ Programming
What is Pointer ?
Pointer points to a memory
Car pointer 10
2001
Stack Stack
var ptr
Code Code Void main()
Void main() {
{ Int var[4] = {1,2,3,4};
Int no = 10;; Int *ptr = var;
Cout << no; Cout << (*ptr);
} }
Why Pointers ?
Pointer Uses
Use Properly
1. Directly Accessing Memory
2. Accessing Array Elements
3. Passing Arrays and strings to function
4. For creating Data Structures like
linked list
Pointer Usage
virtual functions --- new Operator ----- this pointer
Program in Memory
Memory
var1 20001 FLOAT
20002
20003
program
20004
var2 20005 INT
20006
Pointers Notation
void main ( )
{
Data_Type *POINTER_NAME; int number = 10;
int *ptr = NULL;
int *ptr = NULL; ptr = &number;
void main ( )
{
int arr[5]= { 10, 20, 30, 40, 50 };
0 1 2 3 4
for ( int i =0; i<5; i++ )
{ 10 20 30 40 50
cout << arr[i] << endl;
}
}
Pointer And Arrays
void main ( ) ptr Memory
{ 20001 10 20001
int arr[5]= { 10, 20, 30, 40, 50 }; 20002
79349
int *ptr = arr; 20 20003
20004
for ( int i =0; i<5; i++ ) 30 20005
{ 20006
cout << *( ptr + i ) << endl; 40 20007
}
20008
}
50 20009
20010
ptr (20001)
Pointers And Function
void main( ) temp
{ void square( int *ptr )
int number = 10; { 10
int temp = *ptr; 40001
cout << number;
temp = temp*temp; temp
square ( &number );
100
10
*ptr = temp;
cout << number; } 40001
}
110 112
ptr ptr
Memory Management
Static Memory Allocation, is used when we Dynamic Memory Allocation, is used when we
know amount of memory needed ( like we have don't know amount of memory needed ( like no
upper limit. upper limit.
Static Memory Allocation, is done automatically Dynamic Memory Allocation, is done manually
by your compiler. by programmer.
ptr
ptr = new int; 2001 Request for memory
2001
or
int *ptr = new int;
ptr
Memory
pointer
121G solution
dataType *pointerName = &variable;
dataType *pointerName = NULL;
dataType *pointerName = new dataType;
Pointers Limitations
problem ( not using )
2. Memory Leaks. delete pointerName;
Memory
Used Unused
pointer
1000 1000 .......
solution ( use )
delete pointerName;
pointer
delete [] pointerName;
2000
Pointers Limitations
3. Dangling Pointer.
pointer1
Unknow
1000
Unreserved
Reserved Memory
Memory
pointer2
pointer2
1000
1000 1000
Program Crash