C语言的内存五大分区分别是栈区、堆区、全局/静态区、常量区、代码区。12
-
栈区:这是由编译器在需要时分配,在不需要时自动清理的变量的存储区。栈区存放的数据包括局部变量、形参、被调用函数的地址等。栈区的特点是读取速度快,存储和释放数据遵循栈的数据结构原则,即存数据为压栈,释放数据为弹栈。栈区空间相对较小,基本类型的数据占用空间大小不会随值的改变而改变。
-
堆区:堆区主要用于存放通过
malloc
操作符创建的数据。堆区的空间较大,引用类型数据的大小是动态的,会根据数据的增加而改变。通过free手动释放。 -
全局/静态区:这个区域存放全局变量和静态变量。全局变量是在程序运行过程中一直存在的,而静态变量在程序运行期间保持不变,无论局部变量是如何变化的。
-
常量区:常量区存放常量,这些常量在程序运行过程中不能被改变。
-
代码区:代码区存放程序的代码,程序运行时需要将其载入内存中执行。