如何确定C中的悬空指针?这是一个例子。
int *fun(void) {
int i = 2;
return &i;
}
答案 0 :(得分:0)
在下面的代码块中
int *fun(void) {
int i = 2;
return &i;
}
您返回的是本地变量的地址,这意味着您正在返回悬挂指针,并且会导致不确定的行为,因此编译器可以警告过你
错误:函数返回局部变量的地址 [-Werror = return-local-addr]
return &i;
如果可以使用gcc -Wall -Wstrict-prototypes -Werror test.c