空悬指针和野指针的区别

空悬指针:指向的空间已被释放
野指针:指针未被初始化(赋值)


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函数返回,变量的空间将被回收,
    //此时获得的指针指向的空间有可能被覆盖。
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 8,647评论 0 18
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,144评论 1 51
  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 7,900评论 0 13
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,803评论 3 44
  • 2017年8月1日星期二 儿子放假期间极少出门,除了睡觉,看电视、玩手机占据了孩子大部分时间,我白天上班,可以想象...
    若兰幽香阅读 1,430评论 2 3