题
C99 [部分 6.3.2.1/1
]说
LVALUE是具有对象类型或void以外的不完整类型的表达式。 如果在评估对象时未指定该对象,则该行为是未确定的。
该部分有什么 大胆的 意思是?有人可以用例子解释吗?
解决方案
零指针,指针以交易对象和指针,以自动存储持续时间的生命已经结束。在无效的LVALUE中取消这些结果;如果幸运的话,您通常会遇到的未定义行为是塞格福,如果没有,任意堆或堆叠损坏。
其他提示
#include <stdio.h>
int* ptr;
void f(void) {
int n = 1;
ptr = &n;
}
int main(void) {
f();
// UB: *ptr is an lvalue that is not an object:
printf("%d\n", *ptr);
return 0;
}
不隶属于 StackOverflow