Windows x64 的 44 位虚拟内存地址限制背后

2023-11-29

http://www.alex-ionescu.com/?p=50.

我读了上面的帖子。作者以单链表为例解释了为什么Windows x64仅支持44位虚拟内存地址。

struct {  // 8-byte header
        ULONGLONG Depth:16;
        ULONGLONG Sequence:9;
        ULONGLONG NextEntry:39;
} Header8;

第一个牺牲是减少序列的空间 将数字从 16 位改为 9 位,减少最大序列 列表中可以实现的数字。这仍然只留下 39 位 指针 — 与 32 位相比的平庸改进。通过强制 结构体在分配时是 16 字节对齐的,还可以多 4 位 赢了,因为现在可以始终假定底部位为 0。


哦,我听不懂。

“通过在分配时强制结构进行 16 字节对齐,可以多赢得 4 位,因为现在可以始终假定底部位为 0。”方法?


16 is 0010000 in binary

32 is 0100000 in binary

64 is 1000000 in binary

etc

您可以看到,对于所有 16 的倍数的数字,最后四位始终为零。 因此,您可以将它们保留下来,并在需要使用指针时将它们添加回来,而不是存储这些位。

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

Windows x64 的 44 位虚拟内存地址限制背后 的相关文章

  • 为什么我的文件路径中出现 Unicode 转义的语法错误? [复制]

    这个问题在这里已经有答案了 我想要访问的文件夹名为 python 位于我的桌面上 当我尝试访问它时出现以下错误 gt gt gt os chdir C Users expoperialed Desktop Python SyntaxErro
  • R 脚本自动化时的不同结果

    以下命令对 pdf 文件执行 Ghostscript 这pdf file变量包含该 pdf 的路径 bbox lt system paste C gs gs8 64 bin gswin32c exe sDEVICE bbox dNOPAUS
  • 尝试理解 printf() 的 gcc 汇编输出

    我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
  • 如何让脚本执行结束后自动删除?

    是否可以制作一个Python脚本 在Windows中执行结束时删除 py文件 自删除 这种方式使您的程序不依赖于操作系统 from os import remove from sys import argv remove argv 0 奖励
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • 更改desktop.ini不会在Windows中自动更新文件夹图标

    我使用此批处理脚本将所有文件夹和子文件夹的图标更改为位于文件夹中的 ico 文件 但是 资源管理器中的文件夹图标不会改变除非我手动重命名desktop ini将资源管理器中的文件更改为其他内容 然后返回desktop ini或者例如将字母更
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 删除指向对象的 C++ 指针

    我认为删除命令会释放我分配的内存 有人可以解释为什么删除后我似乎仍然有内存在使用吗 class Test public int time int main Test e e new Test e gt time 1 cout lt lt e
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 如何使用命令行压缩文件?

    我想使用批处理文件命令 Windows XP 批处理文件 压缩目录 例如 如果我想解压缩一个文件意味着我可以使用jar xf file zip java bat 文件命令 就像我想要一个命令行批处理来压缩目录一样 如果您使用的是 Ubunt
  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 为什么我只能用管理员权限才能导入Python中的某些模块?

    我正在努力解决 Python 2 7 中的一些奇怪问题 我写了一个很长的工具 在其中导入不同的模块 我必须首先使用它安装pip 该工具将在公司内部共享 不同的用户在其特定机器上拥有不同的权限 当另一个用户登录我的计算机 我在那里拥有管理员权
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 不在焦点时响应键盘? (C#、Vista)

    我正在尝试编写一个应用程序 只要按下 Shift 键 无论当前哪个应用程序具有焦点 它都会做出响应 我尝试过这个SetWindowsHookEx 与GetKeyboardState 但这两种方法仅在应用程序窗口具有焦点时才有效 我需要它在全

随机推荐

  • 从查询sql数据库获取数据到javascript

    我的代码有问题 像这样的情况 我有一个下拉列表 如果选择 个人 则会出现新的下拉列表 其中包含从数据库查询检索的数据 如果选择 公共 则下拉列表消失 HTML 代码如下
  • AES CBC 解密有效,CTR 无效

    我正在尝试使用 AES CBC 和 CTR 模式解密数据 密文前面已添加 16 字节 IV 我的密文数据采用以下格式 vector
  • live() 和 bind() 在 jQuery 1.7 后被弃用的原因是什么

    从 jQuery 1 7 开始 live and bind 已被弃用 取而代之的是 on 正在使用中 这两个都是很棒的功能 运行起来很有魅力 移除的目的是什么 这背后的技术原因是什么 And why on 是否提供使用 引用自此articl
  • 检查数组是否包含具有特定属性值的对象

    我有一个大约 30 个对象的数组 每个对象都有一个称为 注册 的属性 我用注册属性来唯一标识每个对象 每个对象还包含一个时间戳 始终是唯一的 每隔 30 秒 我就会从 API 下载这 30 个对象的一个 新实例 有可能将新对象添加到当前数组
  • 查找从数据框到特定位置最近的城市

    下面的数据框包含有关纬度 经度 州和城市的信息 我想找到 数据框中给出的每个城市的三个最近的城市 例如 从下面 dataframe 俄克拉荷马城和 Colarado SPringd 距离阿尔伯克基最近 所以距离阿尔伯克基最近的三个城市应该是
  • 将 JAR 添加到 Eclipse Java 库

    如何将 JAR 文件添加到 Eclipse 中已有的 Java 库 请注意 这不是用户库 也就是说 如果您查看 Java 项目的 Java 构建路径并单击 库 选项卡 您将看到该项目使用的库的列表 如果展开给定的库 您将看到该库中包含的 J
  • Linux C/C++程序如何支持多种语言?

    例如 在这个最简单的 hello world 程序中 include
  • 如何在 NAT 后面实现 CORBA 客户端

    我有以下接口 interface Server void subscribe in Client client interface Client void ping void pong 初始化时 客户端将连接到服务器并调用 subscrib
  • 您可以在两个 git 存储库之间共享文件及其历史记录吗?

    我不确定这是否可行 但我希望能够拥有一个文件并在 git 存储库中保存的两个项目中使用它 这样 如果我在一个项目中进行更改 则在拉取文件时另一个项目会接受该更改 理想情况下 该特定文件的历史记录将显示两个项目的所有更改 其他一切都将保持独立
  • 如何在 Windows 10 中启用 VT100 终端仿真?

    我想在Python程序执行期间 在IDLE或CMD或其他终端中 使用ANSI转义码打印彩色文本 请告诉我 Windows 命令提示符启用 VT100 终端仿真的确切命令 或者逐步告诉我另一种方法 我已经搜索并找到了一些方法 但我不明白如何实
  • 查找 MongoDB 中数组内字段的总和

    我有一个数据如下 gt db PQRCorp find pretty id 0 name Ancy results evaluation term1 score 1 463179736705023 evaluation term2 scor
  • 如何检测 Vaadin FileDownloader 何时成功或失败

    我有 Vaadin 7 代码 为用户提供下载文件的选项 Button btnDownloadResults new Button Download Results FontAwesome CLOUD DOWNLOAD resource ne
  • 高阶函数 - Javascript

    我正在使用 Eloquent Javascript 进行工作 功能count接受一个数组和一个测试函数 等于 x 作为参数 并返回测试函数返回 true 的数组中的元素数量 我了解这些功能工作的大致方式 并且从逻辑上讲total传递给red
  • 由于准备情况检查失败,Google App Engine 部署失败

    自定义应用程序引擎环境无法启动 这似乎是由于运行状况检查失败 该应用程序有一些自定义依赖项 例如 PostGIS GDAL 因此在应用程序引擎映像之上有几层 它构建成功并在 Docker 容器中本地运行 ERROR gcloud app d
  • 如何使用 matplotlib 沿着指定半径的点 (x1,y1) 和 (x2,y2) 的长度绘制圆柱体?

    我想使用 matplotlib 沿着点 x1 y1 和 x2 y2 的长度绘制一个具有指定半径 r 的圆柱体 请让我知道如何执行此操作 只是为了好玩 我将把它推广到任何轴 x0 y0 z0 到 x1 y1 z1 如果您想要 xy 平面上的轴
  • 当 SwiftUI 中相关实体发生更改时,如何更新 @FetchRequest?

    在 SwiftUI 中View我有一个List基于 FetchRequest显示a的数据Primary实体和通过关系连接Secondary实体 这View和它的List当我添加新的时 已正确更新Primary具有新的相关辅助实体的实体 问题
  • std::unique_ptr 用于需要 free 的 C 函数

    想想一个 C 函数 它返回的东西必须是freed 例如 POSIX 的strdup 我想在 C 11 中使用该函数并避免任何泄漏的机会 这是正确的方法吗 include
  • 如何使用单个路由文件捕获所有网址

    我想在 next js 中定义一条路由来捕获此网址 https mytestsite com mypath document this is to upload a document https mytestsite com mypath
  • 有没有办法在不同的域上拥有圣所

    我在域 A 上有 spa 在域 B 上有一个 Laravel 服务器 我想使用 sainttum 但 cookie 只在同一个域中工作 所以你建议有什么办法解决这个问题吗 我不想在 sainttum 上使用基于令牌的 AUTH 是的 您可以
  • Windows x64 的 44 位虚拟内存地址限制背后

    http www alex ionescu com p 50 我读了上面的帖子 作者以单链表为例解释了为什么Windows x64仅支持44位虚拟内存地址 struct 8 byte header ULONGLONG Depth 16 UL