See WildPointer.
A pointer that was pointing to the right object, but the memory pointed by this pointer was then returned to the MemoryAllocationEngine?, while some parts of the program still refer to it.
The memory is therefore reassigned to other parts of the program, which change it at will, so the pointer seems to dangle: The data pointed to by this dangling pointer is meaningless, and dereferencing it will normally cause UndefinedBehavior.
This can't happen when using GarbageCollection. It also can't happen when using arena-based memory allocation with safety enforced by a type system, such as the "region" mechanism in CycloneLanguage.
In some systems, for example the ObjectCapabilityOperatingSystems ErosOs and KeyKos, deleting an arena ("zapping a space bank" in EROS/KeyKOS terminology), results in pointers that dangle, but that have well-defined error behaviour. So dereferencing a DanglingPointer does not necessarily cause UndefinedBehavior.
There are other ways to create WildPointers:
I think you meant manual memory deallocation. See also ResourceAcquisitionIsInitialization and BoostSharedPtr for how to eliminate dangling pointers in C++.