C++ Null Pointers
A null pointer in C++ is a pointer that does not point to a valid object or memory location. Null pointers are commonly used to indicate that a pointer currently has no valid address.
What is a Null Pointer?
A null pointer is a pointer whose value represents the absence of a valid memory address. In modern C++, nullptr is the recommended way to represent a null pointer.
Example: int* ptr = nullptr;
Using nullptr in C++
The nullptr keyword was introduced in C++11 and provides a type-safe way to initialize a pointer to a null value.
Example: int* number = nullptr;
Checking for a Null Pointer
Before dereferencing a pointer, you should check whether it contains a valid address. A pointer can be compared with nullptr to perform this check.
Example: if (ptr != nullptr) { /* use ptr */ }
Dereferencing a Null Pointer
Dereferencing a null pointer means trying to access the value stored at an invalid memory address. This results in undefined behavior and can commonly cause a program to crash.
Example: int* ptr = nullptr; // *ptr is unsafe
nullptr vs NULL
In older C++ code, NULL was commonly used to represent a null pointer. Modern C++ recommends using nullptr because it is type-safe and specifically represents a null pointer.
Example: int* ptr = nullptr;
Common Mistakes with Null Pointers
- Dereferencing a pointer that is nullptr
- Using an uninitialized pointer
- Forgetting to check a pointer before accessing it
- Using NULL instead of nullptr in modern C++ code
- Accessing a pointer after the object it points to has been destroyed
Best Practices for Safe Pointer Usage
- Initialize pointers with nullptr when they do not point to an object
- Check pointers before dereferencing them when they may be null
- Prefer smart pointers such as std::unique_ptr and std::shared_ptr for dynamic memory management
- Avoid using raw pointers for ownership unless there is a specific reason
- Use nullptr instead of NULL in modern C++