系统相关
首页 > 系统相关> > 内存中的堆栈

内存中的堆栈

作者:互联网

大概的几个分区

  1. 程序代码区:存放函数体的二进制代码
  2. 栈区:由编译器自动分配释放,存放函数的参数值和局部变量等
  3. 堆区:由程序员分配释放(new),或者可以由垃圾回收机制回收
  4. 全局区:全局变量和静态变量的存储

栈(stack)又名堆栈是操作系统在建立某个进程时或者线程,为这个线程建立的存储区域,在编译的时候可以指定需要的栈的大小

栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。

用于动态分配内存,c语言中使用malloc/free进行申请和释放。申请空间这种事一般都是有操作系统来做,但是在编程是我们需要经常申请空间,就需要经常调用系统代码。在用户状态与内核态之间切换,也就是频繁的调用中断处理程序,导致性能较差,但事实上不是这样的,比如在写c语言代码时,都是通过调运运行库封装好的库函数,而库函数里提前申请好一段适当大的内存,给编程用,当我们需要申请空间时,对于小空间直接向库函数里取相应大小的空间即可,这样就提高了性能

堆和栈区的区别

栈区:存储函数参数,占据连续的存储空间
堆区:由程序员分配和释放,不占用连续的空间,容易造成内存碎片

参考文献

操作系统,堆栈(stack),堆(heap),详解

标签:栈区,程序员,空间,内存,堆栈,库函数
来源: https://www.cnblogs.com/rush-peng/p/15116300.html