CurriculumDangling Pointers

Dangling Pointers

A dangling pointer is a pointer that points to memory that has already been deleted or freed. Because the pointer variable itself isn't automatically destroyed or cleared when you call 'delete', it continues to hold the memory address. Using it will cause undefined behavior, data corruption, or a crash.

01The Dangling Pointer

Let's see what a dangling pointer looks like. We allocate memory, use it, and then delete it.

But the pointer still holds the address! If we try to read from it, we get garbage data. If we try to write to it, we might corrupt another program's data and crash.
main.cpp
Loading...
Terminal
Waiting for execution...
Visualizer
Run code to see stack and heap.

02The Fix: nullptr

The best practice in manual memory management is to immediately set your pointer to nullptr after deleting it.

This turns the dangerous dangling pointer into a safe null pointer. You can safely delete a nullptr multiple times without crashing.
main.cpp
Loading...
Terminal
Waiting for execution...
Visualizer
Run code to see stack and heap.

03The Double Free Crash

If you don't set it to nullptr, and you accidentally delete the same pointer twice, the OS will detect memory corruption and instantly kill your program.

This is known as a Double Free error.
main.cpp
Loading...
Terminal
Waiting for execution...

04Scope Danger: Returning Locals

Dangling pointers don't just happen with the heap. If you return the address of a local stack variable, that variable is destroyed the second the function ends!

The caller receives a pointer to dead memory.
main.cpp
Loading...
Terminal
Waiting for execution...

05The Modern Fix (Preview)

In modern C++, you almost never use raw new and delete anymore. We use Smart Pointers which automatically delete themselves when they are no longer needed.

We will cover this deeply in Phase 3!
main.cpp
Loading...
Terminal
Waiting for execution...
← Back to Curriculum