C++C++C++C++编码中减少内存缺陷的方法和工具程振林,方金云,唐志敏(中国科学院计算技术研究所,北京100080)摘要:基于C++的软件的缺陷和错误大部分都和内存相关,预防、发现、消除代码中和内存相关的缺陷,成为程序员编写、调试、维护代码时的重要任务
该文基于“面向网络海量空间信息的大型GIS”课题的工程实践,提出和总结了如何使用C++语言机制、开发环境和相关质量保证工具来预防、发现各种编译期、运行期内存缺陷的方法和工具
关键词:C++;内存错误;内存泄漏;质量保证C++语言是桌面系统,尤其是系统软件、大型应用软件的主流开发语言
C++语言以其灵活性著称,同时也更复杂
利用C++编写健壮的代码,更具有挑战性
C++允许动态内存管理,同时也容易导致更多和内存相关的问题
一般而言,除了系统设计上的缺陷,基于C++的软件的缺陷和错误大部分都和内存缺陷(主要包括内存访问错误和内存泄漏两类)相关
所以,消除代码中的内存相关缺陷,成为程序员编写、调试、维护代码中的任务,也是保证软件质量的关键
本文的工作基于“863”计划项目“面向网络海量空间信息的大型GIS”课题
该系统是基于C++/MFC编写,开发环境是VisualStudio
net2003
本文基于此项目的工程实践,总结了如何使用C++语言机制、开发环境和相关质量保证工具来预防、发现各种编译期、运行期和内存相关的缺陷的方法和工具
1遵循C++相关的编码规范和惯用法,预防缺陷编码规范是语言相关的规则,是经过实践总结出来的经验
良好的编程标准将有效地帮助开发人员避免开发有潜在危险的代码
一般来说,为了减少内存缺陷,应该遵循下列编码规则[1]:(1)基类或者带有虚函数的类应该将其析构函数声明为虚函数
(2)在构造函数中防止内存泄漏,在析构函数中不要抛出异常
(3)使用对应形式的new和delete
即:用delete来释放ne