自动化测试脚本本身是一种开发行为,内存的是否有效利用和回收是程序高质量的重要衡量指标。
如果使用C++来开发自动化测试程序,必须要遵循编译语言的内存利用规则。
内存使用常见错误如下:
1.内存分配不成功,却使用它
对策:使用前检查内存是否为NULL。
2.内存分配成功后,没有初始化就使用它
对策:内存分配后初始化。
3.内存分配成功且已经初始化,但是越界
对策:做越界检查。
4.忘记释放内存,造成内存泄露
对策:内存动态分配和释放必须成双配对。
5.释放了内存却继续使用它
对策:对象关系过于复杂,理不清楚究竟释放了没有,Return指向栈内存的指针或引用 Free或delete内存后,没有把指针置为NULL。导致野指针。
但是,对于Java语言来说,它的一个重要优点就是通过垃圾收集器自动管理内存的回收,程序员不需要通过调用函数来释放内存,因此,很多程序员认为java不存在内存泄露问题,或者认为即使有内存泄露也不是程序的责任,而是GC或JVM的问题。
其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。在java中,内存泄露就是存在一些被分配的对象,这些对象有下面两个特点:
首先,这些对象是可达的,即在有向图中,存在通路可以与其相连。
其次,这些对象是无用的,即程序以后不会再使用这些对象。
如果对象满足这两个条件就可以判定为java中的内存泄露,这些对象不会被GC回收,但是却占用内存。