C语言程序分区

在C语言程序中代码在内存中进行执行的时候,我们粗略的将程序所占用的内存分为栈区、堆区、静态区、常量区、代码区五个区域。每个程序都有唯一五个内存区域。

1、栈区
栈区的数据在栈区以栈的形式进行存储。
栈区的特点:数据先进后出,放在栈区里面存放的是局部变量
栈区之中的数据(局部变量)的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存,回收内存),不需要开发人员来手动管理。

2、堆区
堆区可以高效的使用内存,但是如果数据不用时需要及时释放,否则可能会造成内存泄露。(内存一直被占用得不到释放)
这里的内存可以由程序员自己手动管理,高效的使用内存。例如:申请内存、释放内存、优化内存ARC。
一般常用的申请内存的函数有malloc()、realloc()、calloc()这三个函数。释放内存的函数有free()。(在c++编译器中还有new关键字可用于申请内存空间,delete关键字用于释放内存)

3、静态区
静态区存放的是:全局变量(定义在函数外部的变量,例如在主函数上面定义的变量)和静态变量
static类型的变量的特点(只初始化一次(初始化是在定义的时候辅助),不初始化的话默认为0)
静态区内存是由系统管理的,一旦静态区的内存被分配,静态区的内存直到程序全部结束后才释放。

4、常量区
常量区存放:常量(程序在运行的期间不能够被改变的量 例如:10,‘a’,1.12,“ios”,数组的名字)
常量区的内容通常只能读的不能被修改的。

5、代码区
内存还是由系统控制的
代码区的存放:程序中的函数编译后cpu指令
代码区的地址:函数的地址,程序的入口地,程序的名字
程序被操作系统加载到内存的时候,所有可执行的代码(程序代码指令,常量字符串等)都加载到代码区,这块内存在程序运行期间是不变的。代码区是平行的,里面装的就是一堆指令,在程序运行期间是不能改变的,函数也是代码的一部分,故函数都被放在代码区,包括main函数。

当了解C语言中各个内存区之间的关系时,我们可以根据定义的是局部变量,全局变量,常量还是通过malloc等类似的函数分配内存空间,把他们放到对应的内存区中。这样赋予了这些变量或常量不同的生命周期,不同的释放方式。根据程序的需要。在编码过程中,声明不同的变量类型,使他们有不同的声明长度,不同的释放方式,给我们更大的灵活编程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值