Висячий указатель - это указатель на недопустимую память (которая не равна NULL).Обычно ассоциируется с указателем, который первоначально указывал на действительную память.
int x = new int(4); // x valid;
delete x; // x is now dangling.
// It points at memory that does not belong to application
x = NULL; // x is not dangling.
В вашем исходном примере указатель никогда не может свисать, поскольку он указывает на автоматическую переменную, которая всегда будет действительна (в то время как модификатор действителен).Хотя, если вы вернете модифицированное в результате выполнения функции, оно будет зависать (если вы не присваивали NULL).
Назначение NULL для указателя после удаления очень важно в C. Но не так уж много в C ++так как ваши указатели должны быть заключены в класс, чтобы он больше не был доступен после его использования.
std::string data; // There is a pointer inside here.
// No need to set it to NULL. The destructor handles all that.