悬空指针与野指针区别

  • 悬空指针:当所指向的对象被释放或者收回,但是没有让指针指向NULL;
  • {
       char *dp = NULL;
       {
           char c;
           dp = &c;
       } 
      //变量c释放,dp变成空悬指针
    }
    void func()
    {
        char *dp = (char *)malloc(A_CONST);
        free(dp);         //dp变成一个空悬指针
        dp = NULL;        //dp不再是空悬指针
        /* ... */
    }
    • 野指针:那些未初始化的指针;
    int func()
    {
        char *dp;//野指针,没有初始化
        static char *sdp;//非野指针,因为静态变量会默认初始化为0
    }


标签: dp、指针、空悬、char、悬空、面试
  • 回复
隐藏