C语言内存管理

来源:互联网 发布:java图书管理系统源码 编辑:程序博客网 时间:2024/06/18 08:23

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

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

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

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

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

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

原创粉丝点击