Dangling Pointer in C: Definition and Handling
☰Fullscreen
Table of Content:
Dangling Pointer
- Dangling pointers arise when an object is deleted or de-allocated, without modifying the value of the pointer, so that the pointer still points to the memory location of the de-allocated memory.
- In short, a pointer pointing to a non-existing memory location is called a dangling pointer.
Examples of Dangling Pointer
There are different ways where Pointer acts as a dangling pointer.
Way 1: Using free or de-allocating memory
#include{ char *ptr = malloc(Constant_Value); ....... ....... ....... free (ptr); /* ptr now becomes a dangling pointer */ }
We have declared the character pointer in the first step. After the execution of some statements, we have the de-allocated memory which is allocated previously for the pointer.
As soon as memory is de-allocated for a pointer, the pointer becomes a dangling pointer
Way 2: Out of Scope
#includevoid main() { char *ptr = NULL; ..... ..... { char ch; ptr = &ch; } ..... /* dp is now a dangling pointer */ }
- Character Pointer is Declared in the first Step.
- Pointer Variable ‘ptr’ is pointing to Character Variable ‘ch’ declared in the inner block.
- As character variable is non-visible in Outer Block, then Pointer is Still Pointing to Same Invalid memory location in Outer block, then Pointer becomes “Dangling”.
Example: De-allocation of memory
// Deallocating a memory pointed by ptr causes // dangling pointer #include #include int main() { int *ptr = (int *)malloc(sizeof(int)); // After below free call, ptr becomes a // dangling pointer free(ptr); // No more a dangling pointer ptr = NULL; }
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