指针操作安全

作为一名C++程序员,指针操作非常重要,但是指针操作失误就会出现很多这样那样的问题。

主要的问题是:

1.使用一块没有没有分配内存空间的指针,也分两种情况

第一种:指针被初始化为NULL,即空指针,这类问题的后果比较少,因为一般的程序都会判断指针是否为空的状态

第二种:指针不为空,这样就可能造成很严重的后果。可能是因为当后面立刻分配了一块内存再使用,就不会出现这类问题。

 

2.这个指针指向的一块内存已经被释放,然而释放后没有设置为NULL,再使用该指针就会出错。这成为野指针,即指向一块没有分配内存的地址空间。野指针也可能导致一个潜在的bug,有时出现,不容易查找。

 

3.这个指针A分配了一块内存,但是使用了另外一个指针B,B强制转换了A(B指向的内存是A的部分),用完后释放了B,然后再释放A是会出错。这个问题主要是程序员的指针操作意识比较差,没有很好的管理指针导致的。此类问题出现了,查找也很不方便。

 

所有很多人提倡这样使用指针:

1.初始化时将指针赋值为NULL

2.谁分配了内存,谁释放内存

3.释放内存时,将指针赋值为NULL

4用指针时,尽量判断指针释放是否为空

 

 

在下列情况下要关注条例2

程序结构是层次结构的,下层需要将数据以回调或消息的方式返回到上层

1.数据由下层分配,有下层释放

2.数据由上层分配,传入指针到下层,有下层改变数据

3.由上层传入指针,有下层分配数据,那就需要上层使用完后释放内存

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值