• 使用指针时应注意的问题


    指针是一柄双刃剑,用得好所向披靡,用得不好搬石头砸自己的脚。使用指针时尤其要注意,稍有不慎就会让程序崩溃,根据自己的学习使用即碰到的问题总结于下,只是个人见解,当然只是一叶障目,指针的博大精深还有待我去发掘。

    1.定义指针后要将其初始化

    所谓的初始化就是将指针指向具体的位置,若指针不指向任何位置就赋为NULL,不能让指针为一个野指针。如下

    int *p;

    p=NULL ;  //或者指向一个地址p=&a

    如果是类中的全局变量就在构造函数中初始化,如果是局部变量就在定义了后立即初始化

    2.给指针分配了内存空间引用时一定要注意大小

    比如定义了int型指针p

    p = new int[100];

    在引用p[i]时,i一定不能大于99,否则会出现访问越界

    3.要记得释放指针内存空间

    在需要释放指针内存空间时(不需要使用该指针或需要重新分配内存空间时),一定要将其释放,然后再赋予NULL

    delete []p;

    p=NULL;

    4.特殊情况

    对于一些局部变量的指针,如果分配了内存空间,照理说用完后就要释放掉,但在有些情况下,比如某些对象与该指针有关系时,释放掉内存空间后在使用对象时反而会让程序崩溃,这时就不用管指针了

    比如:

    QImage *image;  //全局变量

    unsigned char* data = new unsigned char[bytePerLine * imageY]; //局部变量

    image = new QImage(data,imageX,imageY,bytePerLine,QImage::Format_RGB888);

    这时image对象就与data有关,如果delete掉data,再使用image时程序就会崩溃(为什么会这样,一时还没弄明白)

    5.不正当使用的典型问题

    不正确使用指针往往会出现一些意想不到的问题,最典型的就是地址访问冲突,出现这种问题首先检查指针

  • 相关阅读:
    RedHat 7 安装PostgreSQL 10.5
    百万级数据库优化方案
    所有文章的测试Demo
    PostGreSql安装
    windows server 2016部署服务
    Spring MVC Hello World 404
    Unity攻略
    Unity判断用户联网状态,WiFi/移动网络/无网络
    Unity UGUI Layout自动排版组件用法介绍
    Unity中对系统类进行扩展的方法
  • 原文地址:https://www.cnblogs.com/Romi/p/2435456.html
Copyright © 2020-2023  润新知