pdf文档 C语言“悬空指针”和“野指针”

专业资料 > IT&计算机 > 计算机软件及应用 > 文档预览
2 页 731 浏览 2 收藏 4.7分

摘要:C语言“悬空指针”和“野指针”悬空指针C语言中的指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。下面这段C语言代码是一个例子,请看:void*p=malloc(size);assert(p);free(p);//现在p是“悬空指针”C语言中的“悬空指针”会引发不可预知的错误,而且这种错误一旦发生,很难定位。这是因为在 free(p) 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以被程序访问并且不会造成冲突,那么之后使用 p 并不会引发错误。最难调试的 bug 总是不能轻易复现的 bug,对不?所以在实际的C语言程序开发中,为了避免出现“悬空指针”引发不可预知的错误,在释放内存之后,常常会将指针 p 赋值为 NULL:void*p=malloc(size);assert(p);free(p);//避免“悬空指针”p=NULL;这么做的好处是一旦再次使用被释放的指针 p,就会立刻引发“段错误”,程序员也就能立刻知道应该修改C语言代码了。野指针上面我们讲的“悬空指针”是指向被释放内存的指针,“野指针”则是不确定其具体指向的指针。“野指针”最常来自于未初始化的指针,例如下面这 段C语言代码://此时p是“野指针”void*p;因为“野指针”可能指向任意内存段,因此它可能会损坏正常的数据,也有可能引发其他未知错误,所以C语言中的“野指针”危害性甚至比“悬空指针”还要严重。在实际的C语言程序开发中,定义指针时,一般都要尽量避免“野指针”的出现(赋初值):void*p=NULL;v

温馨提示:当前文档最多只能预览 5 页,若文档总页数超出了 5 页,请下载原文档以浏览全部内容。
C语言“悬空指针”和“野指针” 第 1 页 C语言“悬空指针”和“野指针” 第 2 页
本文档由 匿名用户2020-11-07 06:45:02上传分享
你可能在找
  • 指针式推拉力计技术参数产品名称:T-00610推拉力计简介:T-00610指针式推拉力计是小型简便的推力,拉力测试仪器,具有设计精细,携带方便,峰值保持,两种单位同时显示等优点。 一、产品概述T-00610指针式推拉力计是小型简便的推力,拉力测试仪器,具有设计精细,携带方便,峰值保持,两种单位同时显示等优点。 广泛应用于高低压电器、电子、电线、五金制锁、汽车配件、打火机及点火装置、制笔、轻工、建筑、渔具、纺织、化工、机械和科研机构等行业作推拉负荷测试、插拔力测试、破坏性试验等,是老式管型推拉力计的替代产品。
    4.9 分 3 页 | 166.09 KB
  • 常量指针、指针常量与指向常量的指针常量的区别常量指针、指针常量、指向常量的指针常量三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一)常量指针。 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。 在C/C++中,常量指针是这样声明的:1)constint*p;2)intconst*p;常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址
    4.8 分 7 页 | 32.00 KB
  • 在本周中,学习了指针与函数、数组与指针、指针与字符串、指针数组、多级指针、结构类型。结构数组、指针malloc函数的用法。一、在数组与指针中,主要学会如何把指针应用到数组中。 目的:1、通过指针引用二维数组中的元素2、学会用指针方式作为形式参数。思路:1、先在函数中计算出改年是瑞年还是平年,并在这函数中计算出该天在这年的天数。 2、在主函数中先定义好每年天每月的天数,这用到数组形式#includeday_of_year(day_tab,year,month,day)int*day_tab;//形式参数为指针intyear
    5.0 分 5 页 | 22.00 KB
  • 指针习题二 若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是()。CA.ps+1B.*(ps+3)C.ps[0][2]D. A.s+1B.s++C.&s[0]+1D.&s[1]若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为()。 AA)﹡(﹡(a+i)+j)B)(a+i)[j]C)﹡(a+i+j)D)﹡(a+i)+j若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为()。
    4.7 分 15 页 | 135.50 KB
  • 指针万用表维修方法一、直流电流部分的故障检查及消除方法故障各量限的误差有正的也有负的产生故障的可能原因消除方法1.表头本身特性改变1.检修表头2.分流电阻某档焊接不良,2.将分流电阻焊牢电阻值增大。 这时一般是先是负误差后为正误差被较表各档无显示,而标准表有显示1.表头线头脱焊或动圈短路动圈2.表头被短路2.排除短路3.与表头串联的电阻损坏3.更换串联电阻或焊牢断或脱焊断头被校表指示快(正误差),但 1.将表头线头焊牢或重绕中间有一分流电阻断路头更换分流电阻大量程时被校表又无指示误差大,且各档都为比例相同的正误差1.与表头串联的电阻值变小2.分流电阻值都偏大1.调整可变电阻A点2.换以正确电阻值3.
    3.0 分 3 页 | 14.18 KB
  • 八毛八文库(www.8doc8.com)--两亿文档等你下载,什么都有,不信你来搜第七章磁与电一、选择题1.为测定一段导线中是否有直流电流通过,手边只有下列器材,其中最有效的器材是(A.被磁化的缝衣针及细棉线 B.带电的小球及细棉线C.条形磁铁和细棉线)D.手电筒和细棉线2.关于磁体、磁场和磁感线,以下说法中正确的是()A.铁和铝都能够被磁体吸引B.磁体之间的相互作用是通过磁场发生的C.磁感线是磁场中真实存在的曲线 D.小磁针在磁场中静止时,S极的指向就是该点磁场方向3.如图所示的奥斯特实验说明了()A.电流的周围存在磁场C.导线做切割磁感线运动时会产生电流B.电流在磁场中会受到力的作用D.小磁针在没有磁场时也会转动
    3.0 分 8 页 | 304.50 KB
  • 《C语言程序设计》课程练习8章函数一、判断题1.在函数定义中,形参变量有时也可以是全局变量。()√×正确2.在C程序中,函数调用可以作为函数的形参。√×正确3.在C程序中,函数调用可以作为函数的实参。 √×正确4.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。 √×正确5.对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。()√×正确6.C语言程序必须包含库函数。
    4.8 分 48 页 | 1.24 MB
  • 3.0 分 1 页 | 69.70 KB
  • C语言文件选择题(答案在最后)1、标准库函数fgets(s,n,f)的功能是A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件 f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存2、在C中,对文件的存取以________为单位A)记录B)字节C)元素D)簇3、下面的变量表示文件指针变量的是 A)FILE*fpB)FILEfpC)FILER*fpD)file*fp4、在C中,下面对文件的叙述正确的是A)用“r”方式打开的文件只能向文件写数据B)用“R”方式也可以打开文件C)用“w”方式打开的文件只能用于向文件写数据
    3.0 分 7 页 | 64.00 KB
  • 党的十八大以来,习近平主席在统揽伟大斗争、伟大工程、伟大事业、伟大梦想的实践中,高度重视国防和军队建设,奋力开拓了以强军支撑强国的宏伟基业,创立形成了具有鲜明时代特征、中国特色的马克思主义军事理论——习近平强军思想 党的十九大把习近平强军思想写入党章,确立这一思想在国防和军队建设中的指导地位。 我们要从坚定维护核心、勠力强国强军的政治高度,充分认识习近平强军思想的深远重大意义,坚决把这一思想贯彻到国防和军队现代化各领域全过程,不断夺取新时代强军事业新胜利。
    3.0 分 6 页 | 20.00 KB
本站APP下载(扫一扫)
活动:每周日APP免费下载全站文档
本站APP下载
热门文档