空悬指针:指向的空间已被释放
野指针:指针未被初始化(赋值)
code by C
int main(){
char c;
char *dp = &c;
free(dp);
return 0;
//变量p指向的空间被释放,dp变成空悬指针
}
int func()
{
char *dp;//野指针,没有初始化
static char *sdp;//非野指针,因为静态变量会默认初始化为0
}
void func()
{
char *dp = (char *)malloc(A_CONST);
free(dp); //dp变成一个空悬指针
dp = NULL; //dp不再是空悬指针
/* ... */
}
int * func ( void )
{
int num = 1234;
/* ... */
return #
//num是基于栈的变量,当func函数返回,变量的空间将被回收,
//此时获得的指针指向的空间有可能被覆盖。
}