APP下载

C++语言中悬挂指针的研究与应用

2016-11-02徐萍

电脑知识与技术 2016年23期
关键词:分配程序故障

徐萍

摘要:C++悬挂指针是指那些不能正确指向合法的指针,该指针会使系统发生不可估计的后果。该文研究了国内外研究现状,从而介绍了Apace、谷歌等著名软件都存在C++悬挂指针,进一步分析了C++悬挂指针出现的类型有:指针未初始、指针对象不存在及指针释放出现问题,并提出了悬挂指针的解决方法。

关键词:C++;悬挂指针;内存泄漏

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)23-0065-02

C++语言是一门极其复杂的语言,许多程序员在使用C++语言指针编写程序时。由于操作不当,往往会出现动态内存问题,比如悬挂指针。悬挂指针是一种常见的Bug,而且不容易发现。潜在的悬挂指针危害极其严重,会导致内存溢出等安全问题。著名的开源服务器Apace就存在一个悬挂指针漏洞,该漏洞存在于Apace mod_isapi模块中,在使用Apace服务器时会出现内存溢出问题。BLee[1]统计了谷歌浏览器从2011年到2013年之间出现C++悬挂指针的漏洞如表1所示。

由此可见,针对C++悬挂指针的危害,进行C++悬挂指针的研究是非常重要的。

1 C++语言悬挂指针故障分析

悬挂指针是指针指向释放内存后的指针,是野指针的一类。C++内存分配方法是主要有堆、栈、自由存储区、全局/静态存储区以及常见存储区。下面对C++语言中悬挂指针故障进行分析。

1.1 使用未初始的指针

首先看例1代码。该程序能够通过编译,但是在运行时会出现问题。这是因为char*name定义了变量但没有指针进行初始化,因而会出现悬挂指针。

1.2 指针所指的对象消失

查看代码如例2所示,运行程序结果不是0.0。……

登录APP查看全文

猜你喜欢

分配程序故障
应答器THR和TFFR分配及SIL等级探讨
故障一点通
遗产的分配
试论我国未决羁押程序的立法完善
一种分配十分不均的财富
绩效考核分配的实践与思考
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
奔驰R320车ABS、ESP故障灯异常点亮
创卫暗访程序有待改进