【发布时间】:2016-10-14 06:02:26
【问题描述】:
在与我的一位同事交谈时,他们说:
foo() { int *p; { int x = 5; p = &x; } int y = *p; }创建未定义的行为,因为生命周期规则和范围规则确实如此 不指定。
但是:
foo() { int *p; { static int x = 5; p = &x; } int y = *p; }不是未定义的!您最终会遇到“间接范围界定”问题。
术语的使用听起来不正确。
我知道静态与范围无关。
第二种情况是否已经定义了行为?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c++ scope static undefined-behavior lifetime