欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言内存管理

程序员文章站 2022-12-10 16:31:20
C语言定义了4个内存区域: 1、代码区:存放程序的代码,只读。 2、全局变量与静态变量区(静态存储区),内存在程序编译的时候已经分配好,在程序的整个运行期间都存在(如全局变量、...

C语言定义了4个内存区域:

1、代码区:存放程序的代码,只读。

2、全局变量与静态变量区(静态存储区),内存在程序编译的时候已经分配好,在程序的整个运行期间都存在(如全局变量、静态变量、字符串常量),分配在该区域的变量,在程序结束时才释放内存,其生命周期比较长,主要用于函数间传递信息。

3、栈区,在栈上创建,在执行函数时,函数内局部变量的存储单元都可以在栈区创建,函数执行结束自动释放。栈内存分配运算内置于处理器的指令集中,效率高,缺点是分配的内存容量有限。Linux系统中为8192K(8M,提供ulimit –s查看)。

这种存储方式,变量内存的分配和释放都自动进行,方便调用,缺点栈容量有限,当相应的范围结束时,局部变量不能再被使用。

4、堆区,某些操作对象只有在程序运行时才能确定(比如说一个结构体中的员工名字,需要用户手动输入,只有用户输入完成后才知道需要多少内存),这样编译器在编译时无法预先分配空间,只能在程序运行时分配,也称为动态分配。程序在运行时使用malloc函数申请任意多少的内存,程序员自己负责释放内存(使用free函数)。动态内存的生命周期由我们决定,使用起来比较的灵活,但问题比较多。