zoukankan      html  css  js  c++  java
  • 使用指针时应注意的问题

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

    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.不正当使用的典型问题

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

  • 相关阅读:
    背水一战 Windows 10 (90)
    背水一战 Windows 10 (89)
    背水一战 Windows 10 (88)
    背水一战 Windows 10 (87)
    背水一战 Windows 10 (86)
    背水一战 Windows 10 (85)
    背水一战 Windows 10 (84)
    背水一战 Windows 10 (83)
    背水一战 Windows 10 (82)
    背水一战 Windows 10 (81)
  • 原文地址:https://www.cnblogs.com/Romi/p/2435456.html
Copyright © 2011-2022 走看看