C语言中的垃圾回收分析
2016-03-05沈俊慧
无线互联科技 2015年20期
沈俊慧
摘要:C语言没有运行时库,无法自动压缩使用中的内存,缩小堆栈所需内存空间。若只申请内存,没有释放,势必造成系统内存不断减少、丢失。长时间的运行,最终导致系统死机。文章阐述了C语言垃圾产生的原因,并从引用计数、标记一清除算法两方面提出如何实现C语言的垃圾回收。
关键词:C语言;垃圾回收;引用计数;标记一清除算法
一般来说,操作系统记录了所有进程使用的全部资源,当系统进程结束时,操作系统会将其所有资源回收,包括内存、寄存器和CPU等所使用的资源。对于许多大型系统来说,一个进程或者程序往往会运行很长时间,如网站进程、守护进程等。操作系统不会主动释放这种进程所占用的资源。如果进程在使用完后内存资源却没有及时释放,就会造成系统内存不断减少、丢失,累积到一定程度,会导致系统无内存可用,进而导致系统无法运行或者错误,严重的甚至死机。
C语言是一种可以直接与操作系统底层交互的语言,它没有运行时库。运行时库可以压缩使用中的内存,缩小堆栈所需内存空间。因此C语言编程中的内存管理依赖程序编写人员。因此,本文将详细阐述C语言中的垃圾回收问题,并阐明其产生原因和常用的回收技术等,以帮助基于C语言的程序开发者更好地设计和实现高效的垃圾回收机制。
1 C语言中垃圾产生的原因
在C语言开发中,内存分配有3种方式:一是函数体内的局部变量,在栈上创建。……
登录APP查看全文
