Dangling Void Null Wild Pointer
Dangling Void Null Wild Pointer
Dangling pointer
A pointer pointing to a memory location that has been deleted (or freed) is called
dangling pointer. There are three different ways where Pointer acts as dangling pointer
1. De-allocation of memory
// Deallocating a memory pointed by ptr causes
// dangling pointer
#include <stdlib.h>
#include <stdio.h>
int main()
{
int *ptr = (int *)malloc(sizeof(int));
int *fun()
{
// x is local variable and goes out of
// scope after an execution of fun() is
// over.
int x = 5;
return &x;
}
// Driver Code
int main()
{
int *p = fun();
fflush(stdin);
int *fun()
{
// x now has scope throughout the program
static int x = 5;
return &x;
}
int main()
{
int *p = fun();
fflush(stdin);
Void pointer
Void pointer is a specific pointer type – void * – a pointer that points to some data
location in storage, which doesn’t have any specific type. Void refers to the type.
Basically the type of data that it points to is can be any. If we assign address of char
data type to void pointer it will become char Pointer, if int data type then int pointer and
so on. Any pointer type is convertible to a void pointer hence it can point to any value.
Important Points
1. void pointers cannot be dereferenced. It can however be done using typecasting
the void pointer
2. Pointer arithmetic is not possible on pointers of void due to lack of concrete value
and thus size.
Example:
#include<stdlib.h>
int main()
{
int x = 4;
float y = 5.5;
return 0;
}
Output:
Integer variable is = 4
Float variable is= 5.500000
NULL Pointer
NULL Pointer is a pointer which is pointing to nothing. In case, if we don’t have address
to be assigned to a pointer, then we can simply use NULL.
#include <stdio.h>
int main()
{
// Null Pointer
int *ptr = NULL;
Wild pointer
A pointer which has not been initialized to anything (not even NULL) is known as wild
pointer. The pointer may be initialized to a non-NULL garbage value that may not be a
valid address.
int main()
{
int *p; /* wild pointer */
int x = 10;
return 0;
}