首页
社区
课程
招聘
新手提问。什么是堆栈??
发表于: 2007-1-16 16:54 6508

新手提问。什么是堆栈??

2007-1-16 16:54
6508
本人是个新手~~一直搞不明白。堆栈的含义。那位高手可以给我解释一下~

最好能由浅入深的介绍~~~

还有堆栈在汇编程序中的作用是什么啊???

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
堆栈是连续的内存单元,存取方式遵循“先进后出”的原则。
其作用一般是保存寄存器或标志寄存器的内容。(我也是新手啊 ,有错的话别笑我哦:)

至于它的具体定义,你可以到望上搜一下。
2007-1-31 20:09
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
FILO
2007-1-31 20:23
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
堆栈是用来传递参数用的

临时变量存贮的地方
2007-1-31 20:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
二 堆栈的存储方式

对栈中元素的操作是按后进先出(Last In First Out,简称LIFO)的原则进行的,即最后压入的元素最先弹出。

在栈的操作过程中,有一个永远指向栈顶的栈顶指针,在压入和弹出数据时,栈顶指针向上或向下移动。当栈顶指针为零时(即指向栈底的后面),栈为空栈。如果压入的数据过多超出了栈的最大空间,则发生栈上溢。

在网上找的估计对你有帮助
2007-1-31 22:05
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有些东西是要你靠实践才能掌握好的,
如果给你小程序

void A(int a)
{
    a=3;
}
int main()
{
    int a;
    a=2;
    A(a);
    return 0;
}

你把他运行时干了些什么,或者通过调试器观察堆栈的变化,里面放的内容是什么,怎么变化的。

然后再联系着看看经典的定义,效果是无法想象的。
2007-2-1 00:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
ESP指向栈顶地址
STDCALL调用方式:被调用函数参数从右到左入栈,被调用函数负责清理堆栈,保持堆栈平衡.
2007-2-1 12:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
堆栈对应的硬件是不是内存条?
请高手不笑赐教!
2007-2-1 16:04
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
9
http://bbs.pediy.com/showthread.php?s=&threadid=27018 【转帖】堆和栈的区别 这篇文章不错。
2007-2-1 17:57
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
10
没错, 就是内存条。
2007-2-1 17:59
0
雪    币: 232
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
Last In First Out
2007-2-1 20:36
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
堆和栈其实是不同的两种数据结构,至于数据结构存在于什么的地方(内存?硬盘?其实是无所谓的,“堆对应内存条”显然是错的!)

栈:先进后出,具体就像个桶一样,先放进桶里的东西会更靠近桶低。
堆:以一定结构组织的数据节点,每个节点有值。一般所说的堆是指二叉树形式组织的单元。

具体的定义还是自己照本数据结构书籍看下,想学东西就别手懒。否则会被自己都不清楚的人误导

程序运行中涉及到的堆和栈,除了符合基本定义外,还有其他一些操作系统赋予的特性。比如,堆和栈在虚拟地址空间中的位置分配范围不同,堆和栈的生长方向不同;堆用于MALLOC、new之类的程序自主分配,栈用于临时变量存储和调用实现等等。
2007-2-1 22:40
0
游客
登录 | 注册 方可回帖
返回
//