指针是不是会延长自动存储变量的生命周期? [复制]
Posted
技术标签:
【中文标题】指针是不是会延长自动存储变量的生命周期? [复制]【英文标题】:Does a pointer extend the lifetime of an automatic-storage variable? [duplicate]指针是否会延长自动存储变量的生命周期? [复制] 【发布时间】:2014-01-02 22:00:40 【问题描述】:int main()
float* ptr;
float f10.f;
ptr = &f;
*ptr = 13.f;
// Do more stuff with `*ptr`...
使用/访问*ptr
是有效还是未定义的行为?
我测试了与上述示例类似的情况,一切似乎都可以正常工作,就好像嵌套块中变量的生命周期由于指针而延长了一样。
我知道const&
(常量引用)会延长临时对象的生命周期。指针也一样吗?
【问题讨论】:
您从哪里获得有关const &
延长所引用临时文件的生命周期的信息?我认为,这不是真的。
@TilmanVogel herbsutter.com/2008/01/01/…
"指针是否会延长自动存储变量的生命周期?" - 没有。
@TilmanVogel 是真的。然而,指针不是引用。
与参考文献的联系充其量是微不足道的。您的问题与临时值无关。
【参考方案1】:
这是未定义的行为,因为您正在访问已被释放的对象。
变量f
在该特定范围内声明。当执行流程到达:
*ptr = 13.f;
对象已被释放,ptr
指向f
的旧地址。
因此没有,f
的生命周期没有延长。
【讨论】:
【参考方案2】:浮点数将超出范围,您的指针将引用未分配的内存区域 -> 使用它将导致 UB。
【讨论】:
以上是关于指针是不是会延长自动存储变量的生命周期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章