栈:
在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
全文见百科
http://baike.baidu.com/view/93201.htm
1、栈是限定仅在表尾进行插入或删除 *** 作的线性表;
2、把控制栈中的信息拓广到包括过程活动所需的所有局部信息(即活动记录)、控制栈就变成了活动记录栈,通常称为运行栈。
3、当前活跃着的过程活动可以保存在一个栈中。当活动开始时,把这个活动的结点压如栈中,当它结束时,把它的结点从栈中d出。
栈就是程序的运行空间, *** 作系统根据程序的需求在内存中分配给他和空间运行。程序在设计时栈不完美就可能产生溢出,黑客利用这个漏洞可以使用溢出攻击。堆栈是一种执行“后进先出”算法的数据结构。
设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)