指针与野指针

指针

概念:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址

搞清一个指针只需要知道四个方面

1.指针的类型                //指针声明语句里的指针名字去掉,剩下的部分就 是这个指针的类型。

2.指针所指向的类型     //指针名字和名字左边的指针声明符 *去掉,剩下的就是指针所指向的类型

3.指针的值(指针所指向的内存区)

4.指针本身所占据的内存区。 //32位平台里,指针本身占据了4个字节的长度

     一些细节如下:

          指针分 指向的内存空间 和 对应的内存空间

                  如int  num =5;

                      int *p=#

                *p :根据p对应内存空间里保存的地址找到其对应的内存空间

                num++:对num对应的内存空间的值加1

                p++:对p对应的内存空间的值加1(步长)。

                等式:p==&num,*p==num==*(&num)

  //指针与数组将在后篇具体分析

野指针

1.野指针:随机指向一块内存的指针,导致内存泄漏(指向一块已释放的内存,或没有访问权限的内存)

2.成因:

       ①指针变量未初始化

                      指针刚创建未初始化,它的缺省值是随机的

       ②指针释放之后未置空  

                       指针在free或delete时只是释放内存空间,指针本身还在

       ③超出变量作用域

3.避免野指针

       ①给指针变量赋初值

              A.   char * p=(char * )malloc(sizeof(char))       malloc分配完,最好检验是否分配成功

                   检验: if(NULL = p)

                   {

                           printf("malloc error!\n");

                           exit(1);

                    }

                    分配完空间,避免分配刚释放的空间,需清空

                    可使用函数 memset,bzero

              B.   char * p =NULL     

                    NULL相当于宏,#define NULL (void *)0  0地址不允许操作,访问    当不知道指针指向时,置空。  

       ②释放时置NULL

               free(p);

              p=NULL;      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值