大家好,今天给大家介绍内存常见划分区域,怎么快速记住,文章末尾附有分享大家一个资料包,差不多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。里面学习内容、面经、项目都比较新也比较全!
点击找小助理免费领取资料