Question: What is a wild pointer in a program?
Uninitialized pointers are known as wild pointers. These are called so because they point to some arbitrary memory location and may cause a program to crash or behave badly.
This can be understood from the below examples.
int main() { int *p; // wild pointer, some unknown memory location is pointed *p = 12; // Some unknown memory location is being changed // This should never be done. }
Please note that if a pointer p points to a known variable then it’s not a wild pointer. In the below program, p is a wild pointer till this points to a.
int main() { int *p; // wild pointer, some unknown memory is pointed int a = 10; p = &a; // p is not a wild pointer now, since we know where p is pointing *p = 12; // This is fine. Value of a is changed }
If we want pointer to a value (or set of values) without having a variable for the value, we should explicitly allocate memory and put the value in allocated memory.
int main() { //malloc returns NULL if no free memory was found int *p = malloc(sizeof(int)); //now we should check if memory was allocated or not if(p != NULL) { *p = 12; // This is fine (because malloc doesn't return NULL) } else { printf("MEMORY LIMIT REACHED"); } }