内存常见划分区域,怎么快速记住?

大家好,今天给大家介绍内存常见划分区域,怎么快速记住,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。

内存的常见划分区域主要包括代码区(Code Area/Code Segment/Text Segment)全局区/静态区(Global/Static Area)栈区(Stack Area)堆区(Heap Area)以及常量区/只读区(Constant/Read-Only Area)。这些区域各自承担着不同的功能和角色,下面将分别介绍并给出快速记忆的方法。

1. 代码区(Code Area/Code Segment/Text Segment)

  • 功能:存储程序执行代码的二进制指令,包括函数、类等定义。
  • 特点:通常是只读的,防止程序意外修改指令。在程序运行前就已经确定大小,并在加载到内存时保持不变。
  • 记忆方法:可以想象成“程序代码的家”,只进不出,且不容篡改。

2. 全局区/静态区(Global/Static Area)

  • 功能:存储已初始化的全局变量和静态变量(存放在数据段data segment),以及未初始化的全局变量和静态变量(存放在BSS段,通常被初始化为0或空)。
  • 特点:生命周期贯穿整个程序运行期间,直到程序结束。
  • 记忆方法:可以联想为“全局的、持久的变量仓库”,无论是否初始化,都在这里安家。

3. 栈区(Stack Area)

  • 功能:存储局部变量、函数参数、返回值以及函数调用的上下文信息(如跳转地址)。
  • 特点:由编译器自动分配和释放,遵循后进先出(LIFO)的原则。
  • 记忆方法:想象成“函数调用的栈”,每调用一次函数就压入一个栈帧,函数返回时则弹出栈帧。

4. 堆区(Heap Area)

  • 功能:程序在运行时动态分配的内存,用于存储对象、数组等复杂数据结构。
  • 特点:大小不固定,可动态扩张或缩减。需要程序员手动分配(如使用malloc、new)和释放(如使用free、delete)。
  • 记忆方法:可以联想成“内存的杂货间”,需要时申请,用完后要归还,否则会造成内存泄漏。

5. 常量区/只读区(Constant/Read-Only Area)

  • 功能:存储字符串常量、常量表达式等。
  • 特点:不可修改,即只读。生命周期贯穿整个程序运行期间。
  • 记忆方法:想象成“神圣不可侵犯的常量殿堂”,里面的内容一旦确定就不能更改。

快速记忆方法总结:

  • 代码区:程序代码的家,只读且固定大小。
  • 全局区/静态区:全局的、持久的变量仓库,无论是否初始化都欢迎。
  • 栈区:函数调用的栈,后进先出是原则。
  • 堆区:内存的杂货间,动态分配需归还。
  • 常量区/只读区:常量殿堂不可侵,只读且持久存在。

这样的记忆方法结合了每个区域的功能和特点,有助于快速理解和记忆内存的常见划分区域。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!

点击找小助理免费领取资料

扫码进群领资料icon-default.png?t=N7T8https://ad.pdb2.com/l/16QijNiGb32IFIn

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值