当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C语言内存管理

C语言内存管理

2018年03月24日  | 移动技术网IT编程  | 我要评论

元凶毕露,植物神经功能紊乱症状,疑惧doubt

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

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

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

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

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网