http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html首先需要声明,这个链接里面有比较详细的描述,但是有点长,下面我简单的描述一下,让大家快速的了解这个知识。
我们在汇编语言中或是在操作系统课堂上经常说的堆栈,实际上叫作栈。而堆是程序运行过程中另外一块内存空间。下图就是一个进程跑起来以后在内存中需要的空间(包括数据段、代码段、堆栈段等等,但不是全部)。
栈是干什么的呢?它由编译器自动分配释放,存放函数的参数值,局部变量的值等。函数之间相互调用需要传递参数,就是将参数放到栈里通过压栈和出栈的操作来完成。栈顶可以用esp寄存器来指向。
堆是干什么的呢?它一般由程序员分配释放,是程序员开辟的一块空间,比如用“ p1= (char *)malloc(10)”语句就可以开辟10个char型空间。这个空间的作用就看程序员怎么用了。各位看官可以关注我的微信公众号:laoyangkuaipao
那里有很多操作系统学习、嵌入式开发、最新科技咨询相关的文章。