C语言内存管理

一、计算机存储结构说明

由于现阶段的存储器件都是速度越快,价格越贵,所以按照合理的布局和价格考虑,计算机系统都是使用的层级的存储结构布局。这样的布局再加上相应的 存储管理单元 构成现在的计算机存储系统。

二、c语言主要存储结构

c语言的存储结构一般分为5个主要区域,分别是:栈,堆,代码段,数据段(全局数据区),未初始化全局数据区(BSS)
各区的存储内容如下所示:

栈:
一般存储局部变量,函数参数以及程序切换时的现场保护信息。
栈的管理全部由 操作系统 负责,相关存储分配和释放都操作系统根据程序的情况进行分配。
一般采用小端模式进行存储,存储方向是数据高位存储在高地址位置。
该区进行数据访问的时候,由于是直接使用变量标识符进行的访问,所以访问速度很快。
由于存储管理是操作系统进行的,所以该区使用的时候模式固定,不会出现内存碎片。

堆:
动态存储区,一般存储动态相关的变量,C语言中通过malloc和free程序来进行申请和释放,该部分内存管理都是由程序员自己管理的。
在程序执行的时候,遇到动态内存分配函数malloc的调用的时候,操作系统才会根据系统内存储情况对申请的内存进行分配。
一般采用大端模式进行存储,存储方向是数据高位存储在低地址位置。该区进行数据访问的时候,只能通过对应的 指针 进行访问,访问速度较慢。
该区管理由程序员自己管理,使用比较灵活,但是如果管理不好,容易出现内存泄漏问题,同时也会出现内存碎片。

代码段:代码段一般存储程序具体指令。执行在存储到代码段的时候,一些常量,如字符常量会直接存储到指令中。一般这块区域是只读的,以防止程序执行过程中,程序指令被修改。

数据段:数据段又称全局数据区,里面存储的内容是初始化后的全局变量,初始化后的静态变量(静态局部变量和静态全局变量),一部分字符串常量,该区管理都是有操作系统进行直接管理的。

未初始化全局数据区(BSS):这个区中存储的内容是未初始化的 全局变量,未初始化的静态变量,一般系统都会在该区存储的变量使用之前对该区变量进行初始化,一般都初始化位0。这个区也是由操作系统进行管理的。

剩余的一些存储区域如程序运行环境命令行指令存储,文本相关信息存储等,以下是引用其他博文的截图:
在这里插入图片描述
引用博文的地址如下所示:
https://blog.csdn.net/wzsalan/article/details/79594968

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值