当前版本修复了编译结束后,因没有关闭打开的脚本文件,而可能导致的内存泄露问题。修复的C源文件为zengl_main.c ...

项目下载地址:

    zengl language v1.8.2 源代码的相关地址:https://github.com/zenglong/zengl_language/  对应的tag标签为:v1.8.2

zengl v1.8.2:

    当前版本修复了编译结束后,因没有关闭打开的脚本文件,而可能导致的内存泄露问题。修复的C源文件为zengl_main.c:

/*编译器退出函数,可以输出相关的出错信息*/
ZL_VOID zengl_exit(ZL_VOID * VM_ARG,ZENGL_ERRORNO errorno, ...)
{
	.....................................................
	compile->isinCompiling = ZL_FALSE;
	/**
	 * 编译结束后,如果打开的脚本文件没有被关闭的话(compile->source.file不等于空指针时),就将其关闭掉,否则会发生内存泄露
	 */
	if(compile->source.file != ZL_NULL) {
		ZENGL_SYS_FILE_CLOSE(compile->source.file);
	}
	if(VM->errorno == ZL_NO_ERR_SUCCESS)
		ZENGL_SYS_JMP_LONGJMP_TO(compile->jumpBuffer, 1);
	else
		ZENGL_SYS_JMP_LONGJMP_TO(compile->jumpBuffer, -1);
}


    这种泄露问题主要在需要反复执行脚本的情况下,例如:zenglServer项目。这种情况下,每编译一次,就会打开一次脚本文件。由于没有关闭打开的脚本文件,因此,会随着编译次数的增加而导致内存占用越来越多。如果之前的版本开启了编译缓存的话,可以避免这个问题,因为使用编译缓存的时候,会跳过编译过程。

    在linux系统中,可以使用Valgrind工具进行内存泄漏方面的检测。

    当前版本的代码也只在windows,linux和mac OSX中进行过基本的测试。
上下篇

下一篇: zengl v1.8.3 修复ReUse接口缺陷及段错误,完善语法检测,使用Android Studio开发android项目

上一篇: zengl v1.8.1 修复bug

相关文章

zengl编程语言v0.0.18初始化数组函数

zengl v1.3.0 位运算符 字符串脚本解析 缓存 Bug修复

zengl v1.4.1 及zengl_SDL新增的Android工程

zengl v1.3.2 编译静态库 Bug和向下兼容处理

zengl编程语言v0.0.15变量引用

zengl编程语言v0.0.10实现流程嵌入结构