在程序运行过程中,堆和栈的作用是什么

在程序运行过程中,堆和栈的作用是什么,第1张

存储数据,指令地址等

栈:

函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。

当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。

堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。

全文见百科

http://baike.baidu.com/view/93201.htm

1、栈是限定仅在表尾进行插入或删除 *** 作的线性表;

2、把控制栈中的信息拓广到包括过程活动所需的所有局部信息(即活动记录)、控制栈就变成了活动记录栈,通常称为运行栈。

3、当前活跃着的过程活动可以保存在一个栈中。当活动开始时,把这个活动的结点压如栈中,当它结束时,把它的结点从栈中d出。

栈就是程序的运行空间, *** 作系统根据程序的需求在内存中分配给他和空间运行。程序在设计时栈不完美就可能产生溢出,黑客利用这个漏洞可以使用溢出攻击。

堆栈是一种执行“后进先出”算法的数据结构。

设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12004993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存