前言
这篇文章给大家简单介绍一下C语言中内存管理。
一、C语言内存管理的简图
二、内存的细分
内存分为:
① 栈区
② 堆区
③ 静态存储区
④ 常量存储区
⑤ 代码区
1.栈区(Stack):
① 由编译器自动分配释放。
② 利用栈存储一些临时变量,包括函数参数、函数内部局部变量、返回值等。
③ 栈的操作遵循“先进后出”“后进先出”的原则。
④ 栈由高地址往低地址增长。
2.堆区(Heap):
① 由程序员手动分配、释放的存储区。
② 堆在内存中位于bss区和栈区之间。
③ 通过调用函数如malloc()、calloc()、或realloc()来从堆中分配内存。
④ 必须手动调用free()函数来释放堆内存,否则可能导致内存泄漏。
3.静态存储区:
① 内存分配在程序编译之前完成,且在程序的整个运行期间都存在。
② 存储全局变量和静态变量。
③ 静态存储区细分可以分为data段和bss段。
bss段:① 未初始化的全局/静态变量
② 初值为0的全局/静态变量
data段:有初始值的全局/静态变量,并且初值不为0
4.常量区:
① 常量存储区用于存储常量数据,如字符串常量、const修饰的变量。
5.程序代码区:
① 用来存放程序执行代码的一块内存区域。
总结
这篇文章简单介绍了C语言的内存管理,后面会介绍下基于ARM的C语言,希望对大家有帮助。