c++ - 将使用 4 或 8 对齐规则处理加载到内存中
问题描述
我刚刚了解了 4 或 8 内存对齐并提出了这个问题。
内存对齐会发生在虚拟内存空间还是绝对地址中?
我猜答案是虚拟内存空间,操作系统会将进程加载到绝对地址以'0X00'或'0X0'结尾的位置。
如果不是,请告诉我为什么。非常感谢。XD
解决方案
虚拟地址和实际地址都将在适当的情况下与 CPU 的本机字大小对齐 (*)。(原因是虚拟到物理的映射是在每页的基础上完成的,并且内存页的大小始终是 CPU 原生字大小的偶数倍)。
(*) 小于一个单词的项目例外,并且连续打包在一起以节省内存;char
例如,和数组中的许多单独元素uint_8
不一定是字对齐的。
推荐阅读
- django - RUN pip install -r requirements.txt 不会在 docker 容器中安装要求
- python - 如何修复此代码的“无效语法”错误
- cmake - 共享对象库未列出特定的共享对象依赖项
- docker - 即使完全停止 Docker 服务,Docker 容器仍在运行
- masm - 我被困在“输入字符串:”并且没有进行任何输入 8086 编程
- genetic-algorithm - 为具有多个不相关约束的目标函数创建适应度函数?
- python - OpenGL中的等距视图
- postgresql - Rust postgres 执行,如何将表名作为变量传递
- python - 我得到了不需要的索引值和我需要的值
- python - 如何区分对同一个 Flask webhook 的两个不同调用?