C++ 空悬指针、野指针

    科技2022-08-22  112

    C++ 空悬指针、野指针

    一、空悬指针 指向已经被释放的内存 或者 指向已经被销毁的对象。

    情况一:

    { char *dp = NULL; { char c; dp = &c; } //变量c释放,dp变成空悬指针 }

    情况二:

    void func() { char *dp = (char *)malloc(A_CONST); free(dp); //dp变成一个空悬指针 dp = NULL; //dp不再是空悬指针 /* ... */ }

    当free或者delete调用时,除了释放动态申请的内存,还要将相关的指针指向NULL,避免出现空悬指针

    情况三:

    int * func ( void ) { int num = 1234; /* ... */ return # }

    num是基于栈的变量,当func函数返回,变量的空间将被回收,此时获得的指针指向的空间有可能被覆盖。 二、野指针 没有初始化的(非静态)指针就是野指针,一般情况下,编译器会进行警告。

    int func() { char *dp; //野指针,没有初始化 static char *sdp; //非野指针,因为静态变量会默认初始化为0 }

    参考链接:https://blog.csdn.net/weixin_41565755/article/details/89930702

    Processed: 0.009, SQL: 9