前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >野指针

野指针

作者头像
用户9736681
发布2022-05-11 08:22:57
1910
发布2022-05-11 08:22:57
举报
文章被收录于专栏:嵌入式随笔

野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。

野指针与空指针(NULL)不同,空指针在C语言中定义为

代码语言:javascript
复制
define   NULL      ((void   *)0)

可见空指针指向0地址,而野指针指向不确定的地方。野指针产生主要有两个原因:

1.指针变量未初始化:任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。

2.指针释放之后未置空:有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针删除。

为什么野指针会产生错误呢?

现在有指针int* a和一个变量int b;如果a没有赋值的话,他可能指向任意地方,假设它指向了b的地址,现在又使用了a的指向,如*a=c,那么就在无意间把b的值给改变了。

产生野指针以上面第一个原因居多,可以按照以下方法避免:

  1. 定义指针后初始化为NULL;
  2. 使用前制定一个可用地址;
  3. 引用之前判断是否为NULL;
  4. 使用完后赋值为NULL。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档