NO1.C_内存管理

1. 内存管理

1.1 数据存放

1.1.1 bss 段(未初始化的全局变量)

bss 段用来存放没有初始化和初始化为0的全局变量

特点:

  1. 只占运行时的内存空间,而不占用文件空间
  2. 作为存放全局,贯穿整个程序的运行周期

1.1.2 data 段(初始化过的全局变量)

data 段用于存放初始化非零的全局变量
特点:

  1. 既占文件空间,又占运行时的内存空间
  2. 作为存放全局变量,贯穿整个程序的运行周期

1.1.3 rodata 段(常量数据)

ro代表 read only,rodata 用来存放常量数据。

特点:

  1. rodata 是在多个线程之间共享的,提高运行效率
  2. rodata 在只读的内存页面中是受保护的,任何试图对他的修改都会被及时发现
  3. 字符串会被编译器自动放到 rodata 中,其他数据放到 rodata 中,只需要加 const 关键字修饰

1.1.4 test 段(代码)

text 段存代码和部分整数常量

1.1.5 stack (栈)

栈主要用于存放临时变量和函数参数。实现函数的递归!!!

通常情况下,栈是向下(低地址)增长的:每向栈内 push 一个元素,栈顶向低地址扩展,每从栈中 pop 一个元素,栈顶就向高地址回退

1.1.6 heap(堆)

堆是最灵活的一种内存,生命周期完全由使用者控制。

C语言可以通过 malloc 和 free

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值