【发布时间】:2021-12-18 19:11:11
【问题描述】:
我知道这是一个很常见的问题,但对我来说还是个新问题!
我不明白悬空指针的概念,正在谷歌搜索,并编写测试方法以找到一个。
我只是想知道这是一个悬空指针吗?由于我发现的任何示例都返回了一些东西,所以我正在尝试类似的东西!
谢谢!
void foo(const std::string name)
{
// will it be Dangling pointer?!, with comments/Answer
// it could be if in new_foo, I store name into Global.
// Why?! And what is safe then?
new_foo(name.c_str());
}
void new_foo(const char* name)
{
// print name or do something with name...
}
【问题讨论】:
-
"会是悬空指针吗?!用 cmets/Answer 是" -- 不,不是。您的第一个示例中没有悬空指针。您在那里所做的一切都是完美的、100% 安全和正确的。
-
我不明白你怎么能有一个 悬空指针 ...没有 指针。
-
@TheOtherGuy 我的意思是,没有 const char* ... 携带相同的 const std::string
-
@BenjaminLindley 好吧,形成 Jack 的回答,这似乎是真的,因为 c_str() 返回指向字符串的指针,这在 new_foo 中可能无效 .... 可能是错误的!
-
注意:我编辑了
foo的返回类型,以免因为说你所做的是 100% 安全和正确而显得愚蠢。
标签: c++ pointers dangling-pointer