
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What are Wild Pointers in C/C++
In C/C++, a wild pointer is a type of pointer that has not been initialized to a valid memory address. It points to memory that has been deallocated and is called a dangling pointer. The pointer behaves like a wild pointer when it is declared but not initialized. That is why, they point to random memory location.
Syntax
The basic syntax of initializing wild pointer in C/C++:
int *ptr;
Example of Wild Pointer
In this example, we create a pointer arr that doesn't assign it any memory. Then, it tries to print 5 values from it using a loop. Since arr is uninitialized, it points to some unknown memory, which can cause errors or unexpected output.
#include <stdio.h> int main() { int *arr; for (int i = 0; i < 5; i++) { printf("%d ", arr[i]); } return 0; }
Output
The above program generates a random address on every compilation. The output shown here is not fixed.
1215601518 32764 0 0 1215601523
#include <bits/stdc++.h> using namespace std; int main() { int *arr; for(int i=0; i < 5; i++) cout << arr[i] << " "; return 0; }
Output
The above program generates a random address on every compilation. The output shown here is not fixed.
731007854 32764 0 0 731007859
Explanation of the program:
In the above program, a pointer arr is declared but not initialized. So, it is displaying some random memory locations.
How to Avoid Wild Pointer ?
To avoid the wild pointer, use the following declaration in C/C++:
1. Initialize pointers while declaring
When you create a pointer, also give it a starting value. It helps to avoid errors and keep the program running smoothly.
int z = 0; int *ptr = &z;
2. Set the uninitialized pointers to NULL
If you don't give a pointer a value, set it to NULL. This means it points to nothing and helps prevent errors.
int *ptr = NULL;
3. Use dynamic memory allocation
The dynamic memory allocation is useful to get the memory while the program runs. This is helpful when we don't know about the memory size.
int *ptr = (int *)malloc(sizeof(int)); if (ptr != NULL) { *ptr = 10; free(ptr); // Avoid dangling pointer ptr = NULL; }