-
栈区(Stack)
- 存储内容:用于存储函数调用信息、局部变量、函数参数等。
- 管理方式:由编译器自动分配和释放,当函数调用时会分配空间,函数结束后空间自动回收。
- 特点:存储效率高、访问速度快,但大小有限,适合存放生命周期短的数据。
-
堆区(Heap)
- 存储内容:动态分配的内存区域,由程序运行时手动分配内存(如使用
malloc
、new
等)。 - 管理方式:由程序员手动管理,使用时申请空间,使用完后需要手动释放,释放不当会造成内存泄漏。
- 特点:空间较大、灵活性强,适合存储动态数据,但分配和回收速度较慢,且容易导致内存碎片问题。
-
数据区(静态区,Data Segment)
- 存储内容:用于存储全局变量、静态变量和常量(如全局的
const
常量)。 - 管理方式:程序运行前由操作系统分配,程序结束时自动释放。
- 特点:数据在程序的生命周期内一直存在,适合存放全局或静态变量。
-
代码区(Text Segment)
- 存储内容:用于存放程序的机器指令代码,即编译后的代码。
- 管理方式:由操作系统加载时分配,通常是只读的,以防止程序运行时意外修改代码。
- 特点:包含程序的执行代码,通常在程序执行时不可修改,为了安全和稳定性,往往是只读的。