前言
路在脚下, 秃在前方!!
究竟什么是栈区, 堆区,静态区, 常量区, 代码区, 每次听到这些都是一知半解, 稀里糊涂的.
今天整理一下, 以后忘了也可以回来翻阅.
我在写这篇博客的时候,也查阅了相关资料,包括其他博主的一些博文,发现其中还是有些错误的。我说这个是希望大家在查阅资料的时候依旧保持辩证思维,多去验证。实践是检验真理的唯一标准。
目录
内存的主要划分
内存主要分为: 代码区, 数据区(静态区), 栈区, 堆区, 常量区.
代码区:也称文本区, 用于存放程序的指令. 这个区域通常是只读的, 存储可执行文件的机器指令. 就比如, 程序经过编译、链接后生成的可执行文件就存放在这里。(只能解释到这里了,目前章鱼哥对代码区了解的是在不多,也不敢多说)
数据区:也称静态区、全局区,用来存放静态变量和全局变量。内部还分为初始化数据区和非初始化数据区。
堆区: 是动态分配内存的区域,用于存放程序运行时动态分配的内存空间。在堆上分配的内存空间需要程序员手动进行管理,包括申请、释放等操作。
栈区:栈用于存放函数调用时的局部变量,函数参数,返回地址等信息。栈是一种先进后出的数据结构,内部空间的管理是由编译器自动管理。
常量区:也称为只读区,用于存放程序中的常量数据,这个区域是只读的,不允许对其中的数据进行修改。