悬挂指针是指向无效数据或无效的数据的指针,例如:
Class *object = new Class();
Class *object2 = object;
delete object;
object = nullptr;
// now object2 points to something which is not valid anymore
即使在堆栈分配的对象中也可能会发生这种情况:
Object *method() {
Object object;
return &object;
}
Object *object2 = method();
// object2 points to an object which has been removed from stack after exiting the function
如果字符串被修改或被破坏,c_str返回的指针可能会变得无效。在你的例子中,你似乎没有修改它,但是由于不清楚你将要使用const char * name来做什么,所以不可能知道你的代码本质上是安全的。
例如,如果将指针存储在某处,然后相应的字符串被破坏,则指针变为无效。如果您使用const char *名称在new_foo的范围内(例如,为了打印目的),则指针将保持有效。