C++ Pointers - Dangling Pointers
A dangling pointer is a pointer which points to a memory location that has been deleted or freed. In other words, a pointer points to an invalid memory address. Dangling pointers are one of the most common errors in C++ programming.
Syntax
int *ptr;
delete ptr;
Example
#include <iostream>
using namespace std;
int main() {
int *ptr = new int;
*ptr = 10;
cout << "Value of ptr: " << *ptr << endl;
delete ptr;
cout << "Value of ptr after deleting: " << *ptr << endl; // Dangling pointer
return 0;
}
Output
Value of ptr: 10
Value of ptr after deleting: some garbage value
Explanation
In the above example, we have allocated memory using the "new" keyword and assigned it to a pointer "ptr". We then assigned a value of 10 to the memory location pointed by "ptr" and printed it. After that, we freed the memory allocated using the "delete" keyword and tried to print the value of "ptr" again. Since the memory address pointed by "ptr" has been freed, it now points to some invalid memory address resulting in a dangling pointer.
Use
Dangling pointers can lead to crashes or unexpected behavior in a program. It is important to avoid them by properly managing memory allocation and freeing.
Important Points
- A dangling pointer is a pointer that points to an invalid memory address.
- Dangling pointers can lead to crashes or unexpected behavior in a program.
- Dangling pointers can occur when memory is freed or deleted but the pointer still points to the freed memory location.
- It is important to avoid dangling pointers by properly managing memory allocation and freeing.
Summary
In summary, dangling pointers are one of the most common errors in C++ programming. They occur when a pointer points to an invalid memory address. Dangling pointers can lead to crashes or unexpected behavior in a program. It is important to avoid them by properly managing memory allocation and freeing.