1、概述
在整理数据结构时,整理过栈、队列和堆,但是在学习进程分布的时候又碰到了 栈和堆,初学时很容易把这几个概念给弄混,今天有空就给整理一下。
2、程序在内存中的分布
程序在内存中的分布如下图所示:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210414195133455.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTY0MDI5OA==,size_16,color_FFFFFF,t_70)
1、栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈,先进后出的原则。
2、堆(heap):由程序员手动分配释放,若不释放,在程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似于链表(内存池)。
3、未初始化数据:未初始化的全局变量和未初始化的静态变量。
4、已初始化数据:初始