详谈一下堆和栈
相必大部分嵌入式的工程师对堆和栈肯定不陌生, 肯定也或多或少遇到过相关的问题.今天就来详细聊一下堆和栈相关的话题.
栈
栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
下面这些占用的就是栈区
| 栈 | 举例 |
|---|---|
| 局部变量 | |
| 函数的参数名 | |
堆
堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
- 由
malloc()申请的就是堆的空间 - 由
free()释放的就是堆的空间
下面这些占用的就是堆区
| 堆 | 举例 |
|---|---|
| 全局变量 | |
| 静态变量 | |
| 内存管理所用的内存 |