发明名称 |
一种航管训练系统开发中Qt程序内存使用静态检查方法 |
摘要 |
本发明公开了一种航管训练系统开发中Qt程序内存使用静态检查方法。在航管训练系统中运行一个Qt程序内存使用的静态检查程序,运行时将被检查的代码所在的目录作为运行参数。检测在5个模块中进行:遍历工程目录和子目录下的所有.cpp和.h文件,全路径保存为string类型存放到cpp_file中;按行读取文件每行信息,解析new和delete语句,得到Qt控件对象的创建信息和所有对象的删除信息;解析得到的Qt对象的创建信息存放在newOBJMap中,删除信息存放在deleteOBJMap中;遍历newOBJMap中的每个元素,在deleteOBJMap中查找对应的元素,存在对应元素将信息合并存放QtObjectMap中,检测结果输出到日志文件或控制台。有效解决了航管训练系统因Qt特殊性带来的内存泄露问题,大幅提高系统安全性、可靠性和实用性。 |
申请公布号 |
CN104461890A |
申请公布日期 |
2015.03.25 |
申请号 |
CN201410768041.5 |
申请日期 |
2014.12.12 |
申请人 |
四川川大智胜软件股份有限公司 |
发明人 |
胡术;王煜清;唐麒麟 |
分类号 |
G06F11/36(2006.01)I |
主分类号 |
G06F11/36(2006.01)I |
代理机构 |
成都睿道专利代理事务所(普通合伙) 51217 |
代理人 |
潘育敏 |
主权项 |
一种航管训练系统开发中Qt程序内存使用的静态检查方法,其特征在于:在航管训练系统中运行一个QT程序内存使用静态的检查程序,该程序运行时将被检查的代码所在的目录作为运行参数,该目录可以含有子目录,得到检测结果后,将监测结果输出到日志文件或控制台;本方法专门针对Qt程序中两种Qt专属的两种内存泄露情况提供检查能力:Qt控件对象没有父控件,在堆中new了这个对象;Qt控件对象有父控件;检测在如下5个模块中进行:1)、遍历工程目录和子目录下的所有后缀名为.cpp和.h文件,把文件全路径保存为string类型,再存放到vector类型的cpp_file中;2)、遍历cpp_file中的每个文件,按行读取文件每行信息,解析new和delete语句,得到Qt控件对象的创建信息和所有对象的删除信息;3)、解析得到的Qt对象的创建信息存放在newOBJMap中,所有对象的删除信息存放在deleteOBJMap中;4)、遍历newOBJMap中的每个元素,在deleteOBJMap中查找对应的元素,如果存在对应元素,则将信息合并,存放在QtObjectMap中;5)、遍历QtObjectMap中每个元素,得到检测结果,输出到日志文件或控制台。 |
地址 |
610045 四川省成都市武侯区武科东一路七号 |