C++中的野指针和内存泄漏问题

野指针问题

什么是野指针

在c++中,使用指针是需要解引用去访问一块内存地址的。当一个指针变量指向的地址是非法地址时,就会出现野指针问题。一般我们在写代码的时候,会对指针变量有一个判空处理,但是对于野指针时,是不会被 ‘ ptr == nullptr ’ 中识别出来的。会导致在接下来的代码逻辑中,造成非法访问,异常,导致进程崩溃退出等等的问题。

野指针问题成因

野指针问题也是一个在实际代码工作中很常见的一个问题,也会不同的情况导致野指针问题出现:

  1. 指针变量的初始化,指针变量被定义后,没有正确初始化;
  2. 数据结构内存越界访问;
  3. 指针变量指向地址空间被释放后,指针变量没有置空。

内存泄漏

在C++中,因为内存管理是需要程序员自己控制的,那当程序员一些动态分配一些内存空间后,没有完成释放,就会造成内存泄漏问题。即这块内存虽然没有被我们所使用了, 但是依然处在一种被占用的状态,就像沙漏漏了一样无法使用。就是内存泄漏问题。

内存泄漏和野指针问题, 都是在写代码时,对内存的管理出现了疏漏,导致出现的问题。
同时,这种问题编译器是无法检查出来的,只有运行时才能发现,导致只有出现问题后才能去修,会让效率变低。

智能指针

智能指针时C++中想到一种自动管理内存的方法RAII。
大体思路是我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值