二、函数: 2.1、函数的执行: 1、当我们每次进入一个函数的时候,原函数的栈底进行一个备份,之后将当前函数的栈底和栈顶指针分作同一个。 2、此时我们就可以说产生了一个新栈,产生新栈之后会在新栈中申请一段空间(栈帧),申请到空间之后。 3、再将需要备份的一些寄存器压到栈中。 4、之后将栈中的这些空间 ...
分类:
编程语言 时间:
2017-05-06 10:09:07
阅读次数:
130
简单地说,栈是一种先进后出的数据结构,你可以把它想象成一个桶,每次只能从最顶端处放置或取出数据。 一般我们在io中用一个数组和栈顶指针(用int 便是下标)来模拟一个栈。 栈支持两个操作: 1.向栈顶加入一个元素 2。从栈顶取出一个元素。 这两个操作的时间复杂度都为o(1) 那么它所维护的这个数据集 ...
分类:
其他好文 时间:
2017-05-01 19:48:55
阅读次数:
218
引入外部文件和初始条件 顺序栈的存储结构:须有一个一维数组去存放栈中的基本元素,还要栈顶指针,用来存放栈顶元素的下标 接着开始栈的初始化 ...
分类:
其他好文 时间:
2017-04-22 15:48:49
阅读次数:
151
栈的链式存储结构,我们一般简称为“链栈”。由于单链表有头指针,而栈顶指针也是必须要有的,所以我们通常把栈顶放在单链表的头部,有了栈顶在头部,单链表中比较常用的头结点就失去了意义。通常对于链栈来说,是不需要头结点的,也基本不存在栈满的情况,除非内存已经没有使用的空间了。但对于空栈来说,链表原定义是头指 ...
分类:
其他好文 时间:
2016-12-03 01:55:56
阅读次数:
318
20145306《信息安全系统设计基础》第5周学习总结 教材学习中的问题和解决过程 栈和栈帧 栈: 栈底指针和栈顶指针,栈底指针位于高地址端,栈顶指针位于低地址端。 栈是一种特殊的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。 存储原则是先进后出。 对栈的插入与删除操作中,不需要改变栈底 ...
分类:
其他好文 时间:
2016-10-17 00:11:41
阅读次数:
114
数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表。 ..... 2.代码分解 2.1对栈的结构定义: |说明: 1.base表示栈底指针,在判断出栈、初始化和重新分配空间的时候需要用到。 2.top表示栈顶指针,是 ...
分类:
其他好文 时间:
2016-09-24 16:13:38
阅读次数:
99
概率 esp :栈顶指针,必须的 ebp: 存放堆栈指针,不是必须的 上面这个函数 调用后 堆栈数据分析 ...
分类:
其他好文 时间:
2016-08-21 06:27:54
阅读次数:
396
一,使用单链表实现栈 ①栈需要一个栈顶指针 ②栈的基本操作有出栈和入栈,以及判断栈是否为空 ③单链表中每个结点表示一个栈元素,每个结点有指向下一个结点的指针。因此,在栈内部需要实现一个单链表。代码如下: 二,使用两个栈实现队列 ①栈是先进后出,而队列是先进先出。要实现队列,就需要实现队列的基本操作, ...
分类:
其他好文 时间:
2016-07-02 20:13:59
阅读次数:
201
debug版本 esp 栈顶指针 ebp 存放堆栈指针 空程序:int main(){00411360 push ebp ;压入ebp00411361 mov ebp,esp ;ebp = esp,保留esp,待函数调用完再恢复,因为函数调用中肯定会用到esp.00411363 sub esp,0C ...
分类:
其他好文 时间:
2016-06-25 06:13:03
阅读次数:
231
在C++中类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* p=new A(),A*p=(A*)malloc();静态建立一个类对象,是由编译器为对象在栈空间中分配内存,通过直接移动栈顶指针挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。动态建立类对象,是使用 ...
分类:
编程语言 时间:
2016-06-04 17:37:12
阅读次数:
185