当前版本修复了编译结束后,因没有关闭打开的脚本文件,而可能导致的内存泄露问题。修复的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.1 修复bug

相关文章

zengl v1.8.0 缓存内存中的编译数据,跳过编译过程

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

zengl编程语言v1.0.5 编译,执行,源码调试一体化,开发俄罗斯方块

zengl编程语言 v1.0.3 完善文件出错信息

zengl编程语言v0.0.22实现switch...case

zengl编程语言v0.0.3构建抽象语法树