Windows 汇编堆和堆栈?

2023-11-25

操作系统:Windows 7 32位

所以像c++一样,有一个堆和一个堆栈。但我最近开始进行一些汇编学习,但没有看到任何类似的东西,只有一个堆栈,但它看起来就像纯粹的内存。 那么堆和栈的实现是特定于 C++ 和其他语言的吗?或者您仍然在汇编中分配堆和堆栈吗?当启动一个可执行文件时,Windows 在为进程分配内存方面做了什么? 进程如何知道堆栈大小需要有多大?

怎么办

编辑:也许有人可以提供有关 CPU/OS 如何处理进程的堆和堆栈内存的链接


我的大部分知识都不是特定于 Windows 的,所以请耐心等待:

堆和堆栈指的是内存中的不同区域(但我们仍然在每种情况下讨论主内存)。这并不是任何语言所特有的。堆位于内存低地址并向上增长;堆栈位于内存高地址并向下增长。这是为了防止它们重叠(这将是非常糟糕的)。

在 32 位架构上,EBP 和 ESP 寄存器跟踪当前堆栈帧。 EBP是基指针——它指向当前堆栈帧的高地址。 ESP是堆栈指针,它指向当前堆栈帧的低地址。

请记住,释放/分配的堆和堆栈内存的概念主要与应用程序级别相关。在机器级别,所有内存看起来都是一样的 - 由程序员(或编译器)来跟踪正在使用哪些内存段。

堆栈由以下组合管理:调用函数的指令以及对 EBP 和 ESP 的显式修改。任何低于 ESP 的都被视为已释放;因此,要释放内存,您只需添加到 ESP 即可。

堆通过内存分配方法进行管理;可以找到文档here。我不确定 Winows 的具体情况,但一般来说,会有一些内存管理器负责确保没有内存块分配给多个应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 汇编堆和堆栈? 的相关文章

随机推荐

  • Ninject 如何在 ASP.NET MVC 中创建控制器?

    这可能是一个愚蠢的问题 但我正在查看 Ninject 源代码 但没有看到 NInject 注册自己的控制器工厂 我也没有看到任何IControllerFactory上课于Ninject Web Mvc集会 我错过了什么吗 Ninject 如
  • 获取强制推送的提交的历史记录

    昨天 我们团队的一名成员做了一个git push force在我们的 Bitbucket 存储库内 我知道是谁 但我想知道是否可以收集哪些提交被强制推送到存储库中 我从 git log history 中寻找的信息是这样的 1951097
  • SkiaSharp 和 GPU 加速

    我正在评估 SkiaSharp 库 来自 nuget 版本 1 59 3 一切都渲染得很好 但 Skia 似乎并没有使用 GPU 来加速渲染 Windows 10 任务管理器未检测到我的测试应用程序对 GPU 的任何使用 我正在使用下一个命
  • 使用 CSS 设置 HTML 标题属性的样式

    我正在尝试设置标题属性的样式
  • KStream 批处理窗口

    我想使用 KStream 接口批量处理消息 我有一个带有键 值的流 我尝试将它们收集在翻滚窗口中 然后我想立即处理整个窗口 builder stream longSerde updateEventSerde CONSUME TOPIC ag
  • jQuery - 使用canvas 在div 之间绘制线条

    我有 n div s 每个都有 h1 标题和 ul 中的项目列表 我想将它们漂浮在画布上并从中绘制线条 div 列出项目 y 至 div 我正在使用 jQuery UI 来制作 div 可拖动 canvas 元素位于页面下方的一部分 一段文
  • 在 Xcode 6 中设置选项卡栏项目选定的图像

    这是我对选项卡栏项目的设置 但是 当单击应用程序内的项目时 不会显示 1051 id badge selected 图像 而是不显示任何内容 我的设置有问题吗 有任何想法吗 为了解决这个问题并在不编写任何代码的情况下设置选定的图像 我们还可
  • Java 应用程序在 Linux 上挂在“java.io.UnixFileSystem.getBooleanAttributes0”处

    我们的客户应用程序似乎挂起并显示以下堆栈跟踪 java lang Thread State RUNNABLE at java io UnixFileSystem getBooleanAttributes0 Native Method at
  • 如何设置轴限制

    我需要帮助设置 matplotlib 上 y 轴的限制 这是我尝试过的代码 但没有成功 import matplotlib pyplot as plt plt figure 1 figsize 8 5 11 plt suptitle plo
  • 将 cookie 加载到 Python 请求会话时出错

    我正在尝试从 selenium 导出的 cookie 将 cookie 加载到 Python 中的请求会话中 但是当我这样做时 它会返回以下错误 list 对象没有属性 extract cookies def load cookies fi
  • 为不同的Linux版本构建内核模块

    我是编写内核模块的新手 因此面临很少的非技术问题 由于为特定内核版本 例如 3 0 0 10 10 是补丁号 创建内核模块需要相同版本的内核头文件 因此看起来直接安装内核头文件并在那里开始开发 但修补内核版本的内核头不可用 因为我有一个来宾
  • 为什么这个嵌套 lambda 不被视为 constexpr?

    我正在尝试使用嵌套 constexpr lambda 创建一个柯里化接口 但编译器不认为它是常量表达式 namespace hana boost hana using namespace hana literals struct C1 te
  • 如何验证 CuDNN 安装?

    我搜索了很多地方 但我得到的只是如何安装它 而不是如何验证它是否已安装 我可以验证我的 NVIDIA 驱动程序是否已安装 并且 CUDA 是否已安装 但我不知道如何验证 CuDNN 是否已安装 非常感谢您的帮助 谢谢 PS 这是用于咖啡实现
  • 中心绝对定位的div [重复]

    这个问题在这里已经有答案了 我有一个 div 里面有一个按钮 我让按钮位置为absolute 及其样式代码 buy btn text align center position absolute bottom 10px 我怎样才能将其对齐到
  • Git 大提交最佳实践

    我正在使用 git 上周我在本地存储库上进行了大量工作 我喜欢进行许多小提交 例如 2 或 3 个文件 而不是大提交 但这一次由于时间压力和更改涉及许多文件 我有很多文件未暂存 我的问题是 这种情况下的最佳实践是什么 有没有什么工具可以让我
  • 如何制作一个在 IE 和 Firefox 中都有效的 file:// 超链接?

    在我的文档网页中 我经常需要提供指向存储在 Intranet 上的位置 文件和应用程序 xbap 的链接 在 IE 中 这对于格式如下的 URL 来说效果很好 a href Go to folder a a href Download fi
  • 如何为 UITextField 中的占位符文本设置可访问性特征?

    我正在检查我们的 iOS 应用程序来解决辅助功能问题 该应用程序的功能之一是 UITextField 用户可以在其中输入搜索查询 我将该字段的特征设置为 搜索字段 并且 VoiceOver 大部分时间都对该字段做得很好 当字段中有文本时 它
  • 按列而不是按行对结果进行排序

    SQL中可以按列排序而不是按行排序吗 我不需要基本的 ORDER BY 语句 我知道它们是如何工作的 即 按列 1 列 2 等排序 基本上尝试对这样的事情进行排序 column 1 column 2 column 3 1 0 3 尝试对此进
  • 如何检测用户是否启用了 Mac OS 高对比度辅助功能设置?

    我有一个 React TypeScript 项目 我试图检测用户是否启用了任何 Mac OS 的高对比度辅助功能设置 反转颜色 使用灰度 区分无颜色 增加对比度或增加的显示对比度设置 我想使用 JavaScript TypeScript 检
  • Windows 汇编堆和堆栈?

    操作系统 Windows 7 32位 所以像c 一样 有一个堆和一个堆栈 但我最近开始进行一些汇编学习 但没有看到任何类似的东西 只有一个堆栈 但它看起来就像纯粹的内存 那么堆和栈的实现是特定于 C 和其他语言的吗 或者您仍然在汇编中分配堆