内存位置不在堆叠

本文介绍了计算机程序设计中堆栈的基本概念,包括其操作方式、特性及如何通过类比邮箱来理解堆栈的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)看起来在顶板表面

2)将从堆栈顶部板

3)提出一种新的板堆叠

在计算机程序设计中,堆栈是一种保持其他变量容器(很像数组)。然而,而数组可以访问和修改你希望的任何命令的元素,栈是有限的。可以在堆栈上执行的操作是上面的相同:

1)看看顶端项目在栈中(通常是通过一个函数调用top())

2)把顶端项目从堆栈中(通过一个函数调用pop())

3)把一个新项目堆栈上(通过一个函数调用push())

栈是一种后进,先出(后进先出)结构。最后一项推送到堆栈将第一项弹出。如果你把一个新的板堆栈上,任何人谁需要一个板从堆栈将你推板在第一。最后,首先。当物品被推到堆栈,堆栈的增长较大的项目被弹出堆栈的增长,小。

拟板是一个很好的类比如何调用堆栈的作品,但我们能做一个更好的类比。考虑一束邮箱,所有堆叠在彼此的顶部。每个邮箱只能容纳一个项目,和所有邮箱的开始是空的。此外,每个信箱钉在它下面的邮箱,邮箱数不能改变的。如果我们不能改变的邮箱的数字,我们如何得到一个堆栈的行为?

首先,我们使用一个标记(如便条)保持在最底层的空邮箱。在开始,这将是最低的邮箱。当我们把一项到我们的邮箱栈,我们把它放在信箱被标记(这是第一个空邮箱),和移动标记了一个邮箱。当我们从堆栈中弹出的一个项目,我们将标记下来一个邮箱和删除邮箱的项目。下面的标记任何被认为是“叠”。在标记或标记不在堆栈上的任何东西。

这几乎是完全类似如何调用堆栈的作品。调用堆栈的顺序固定大小的一块内存地址。信箱地址,和“项目”的数据块(通常是变量或地址)。“标记”是一个寄存器(一小块内存)的CPU称为堆栈指针。堆栈指针跟踪在堆栈的顶部是目前。

我们假设的邮箱堆栈和堆栈之间唯一的区别是,当我们调用堆栈弹出一个项目了,我们没有把内存(清空邮箱等)。我们可以把它要覆盖的下一个项目推到那块内存。由于堆栈指针将下面的内存位置,我们知道,内存位置不在堆叠。

所以我们推上了我们的“调用堆栈”?参数,局部变量,函数调用和…。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值