从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍“C语言中的“野指针”和“悬空指针”是什么”,在日常操作中,相信很多人在C语言中的“野指针”和“悬空指针”是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中的“野指针”和“悬空指针”是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
茄子河网站建设公司创新互联公司,茄子河网站设计制作,有大型网站制作公司丰富经验。已为茄子河上1000+提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的茄子河做网站的公司定做!
“野指针”(wild pointer)
“野指针”(wild pointer):是没有被初始化过的指针,所以不确定指针具体指向。例如以下示例代码:
void *p; // 此时 p 是“野指针”
因为“野指针”可能指向任意内存段,因此它可能会损坏正常的数据,也有可能引发其他未知错误。在实际的C语言程序开发中,定义指针时,一般都要尽量避免“野指针”的出现,可通过赋初值方式解决:
void *p = NULL;void *data = malloc(size);
“悬空指针”(dangling pointer)
“悬空指针”(dangling pointer):是指针最初指向的内存已经被释放了的一种指针。通俗点可以理解:指针指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。例如以下示例代码:
void *p = malloc(size);assert(p);free(p); // 现在 p 是“悬空指针”
C语言中的“悬空指针”会引发不可预知的错误,而且这种错误一旦发生,很难定位。这是因为在 free(p) 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以被程序访问并且不会造成冲突,那么之后使用 p 并不会引发错误。
所以在实际的C语言程序开发中,为了避免出现“悬空指针”引发不可预知的错误,在释放内存之后,常常会将指针 p 赋值为 NULL:
void *p = malloc(size);assert(p);free(p); // 避免“悬空指针”p = NULL;
到此,关于“C语言中的“野指针”和“悬空指针”是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图