操作系统课程中内存里面堆和栈的区别

http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html首先需要声明,这个链接里面有比较详细的描述,但是有点长,下面我简单的描述一下,让大家快速的了解这个知识。

 我们在汇编语言中或是在操作系统课堂上经常说的堆栈,实际上叫作栈。而堆是程序运行过程中另外一块内存空间。下图就是一个进程跑起来以后在内存中需要的空间(包括数据段、代码段、堆栈段等等,但不是全部)。


栈是干什么的呢?它由编译器自动分配释放,存放函数的参数值,局部变量的值等。函数之间相互调用需要传递参数,就是将参数放到栈里通过压栈和出栈的操作来完成。栈顶可以用esp寄存器来指向。 

堆是干什么的呢?它一般由程序员分配释放,是程序员开辟的一块空间,比如用“ p1= (char *)malloc(10)”语句就可以开辟10个char型空间。这个空间的作用就看程序员怎么用了。

各位看官可以关注我的微信公众号:laoyangkuaipao

那里有很多操作系统学习、嵌入式开发、最新科技咨询相关的文章。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值