Dangling pointer:
If any pointer is pointing the memory address of any variable but
after some variable has deleted from that memory location while pointer is still pointing such memory location. Such pointer is
known as dangling pointer and this problem is known as dangling pointer
problem.
Initially:
Later:
For example:
(q)What will be output of following c program?
#include<stdio.h>
int *call();
void main(){
int *ptr;
ptr=call();
fflush(stdin);
printf("%d",*ptr);
}
int * call(){
int x=25;
++x;
return &x;
}
Output: Garbage value
Note: In some compiler you may
get warning message returning address of local variable or temporary
Explanation: variable x is local variable. Its scope and lifetime is within
the function call hence after returning address of x variable x became dead and
pointer is still pointing ptr is still pointing to that location.
Solution of this problem: Make the variable x is as static variable.
In other word we can say a pointer whose pointing object has been
deleted is called dangling pointer.
#include<stdio.h>
int *call();
void main(){
int *ptr;
ptr=call();
fflush(stdin);
printf("%d",*ptr);
}
int * call(){
static int x=25;
++x;
return &x;
}
Output: 26
No comments:
Post a Comment