zoukankan      html  css  js  c++  java
  • dangling & wild pointer

    [全部参考自Wiki](https://en.wikipedia.org/wiki/Dangling_pointer)

    空悬指针/野指针

    ###1.野指针
    wild pointer,没有初始化的指针就是野指针。

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

    ###2.空悬指针
    dangling pointer,指向已经释放对象或已经回收的地址。

    ####情况1

    ```
    {
    char * dp = NULL;
    {
    char c;
    dp = &c;
    }
    /*
    变量c在这段区域内被释放,
    dp变成了悬空指针
    */
    }
    ```

    ####情况2

    ```
    #include <stdlib.h>

    void func() {
    char * dp = (char *)malloc(A_CONST);
    free(dp); //dp变成一个空悬指针
    dp = NULL; //dp不在是空悬指针
    /* ... */
    }
    ```
    上面例子提醒我们,当free或delete调用时,除了释放动态申请的内存,还要将相关的指针指
    向NULL,避免出现空悬指针。

    ####情况3

    ```
    int * func(void) {
    int num = 1234;
    /* ... */
    return &num;
    }
    ```
    num是基于栈的变量,当func函数返回的时候,变量的空间就会被回收,因此获得的指针指向的
    空间有可能被覆盖。

  • 相关阅读:
    正则表达式
    jquery获取(设置)节点的属性与属性值
    Easy UI
    javascript中数组常用的方法
    DOM节点
    Echarts的基本用法
    CSS小结
    草稿1
    CSS基础
    wordbreak:breakall和wordwrap:breakword的区别
  • 原文地址:https://www.cnblogs.com/R0SS/p/4733450.html
Copyright © 2011-2022 走看看