zoukankan      html  css  js  c++  java
  • C++指针悬挂-笔记

    别怕摔跤,总会摔的~~~

    感谢:http://www.cnblogs.com/henryzc/articles/294349.html

    1.  char * p = new char[10];  //给p分配一块有10个字节的内存,并把这块内存的开始地址放在p中

    2. 所谓指针悬挂是指 指针指向了一块没有分配给用户使用的内存

    3. 良好的编程习惯是:首先给指针初始化为一个0值(注意我这里没有用空值,因为空值这个术语含义不明),然后在使用的时候检查这个指针

    char * g_pBuffer =(char*)0;
    delete [] g_pBuffer;

    4. 指针拷贝后删除了指针:如果在使用指针过程中对指针进行了拷贝,然后其中一个拷贝被删除,则另外一个拷贝就成了悬挂指针

    char * g_pBuffer =(char*)0;
    g_pBuffer = pBuffer;
    delete []pBuffer;              //pBuffer立刻被删除,而此时g_pBuffer还保存这个指针的一个备份,这个备份就成为一个 悬挂的指针
    

     5.避免指针悬挂的要点:

    • 不保存指针的拷贝,如果要保存指针指向的内容,则新分配一块大小相等的内存,把其内容完全拷贝过去。如果确实不得不保存拷贝,必须小心关注每个拷贝的使用情况,一旦一个拷贝进行了删除,则其他拷贝必须立刻放弃使用。
    • 包含指针的结构和类必须实现拷贝构造函数和operator=运算符,如果不愿意实现,对其赋值和构造必须针对每个成员变量进行特殊处理。
    • 指针使用完毕并删除后,应该把指针变量的值设置为0
    Coding
  • 相关阅读:
    AGC005D ~K Perm Counting
    运行python脚本后台执行
    java枚举类型
    java可变参数长度
    java 泛型数组列表
    java抽象类
    java final使用
    java继承
    java 对象
    java 重载
  • 原文地址:https://www.cnblogs.com/ccie-leon-43093/p/5372724.html
Copyright © 2011-2022 走看看