c++ - Will process load into memory with 4 or 8 对齐规则

标签 c++ linux memory

刚学了4或8内存对齐,就来了这道题。

内存对齐会发生在虚拟内存空间还是绝对地址中?

我猜答案是虚拟内存空间,操作系统会将进程加载到绝对地址以'0X00'或'0X0'结尾的位置。

如果不是,请告诉我原因。多谢。 XD

最佳答案

在适当的情况下,虚拟地址和实际地址都将与 CPU 的 native 字长字对齐 (*)。 (原因是虚拟到物理的映射是在每页的基础上完成的,内存页的大小始终是 CPU 的 native 字大小的偶数倍)。

(*) 异常(exception)情况是小于一个单词的项目,并且连续打包以节省内存;例如charuint_8 数组中的许多单独元素不一定是字对齐的。

关于c++ - Will process load into memory with 4 or 8 对齐规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469349/

相关文章:

c++ - CMake 链接器无法正常工作

系统组件的 C++ 依赖倒置

linux - 该程序用于避免数据争用

linux - Linux 中的 HFP/HSP 配置文件

Java 垃圾收集引用类

c++ ListView - 使用 ListView_DeleteAllItems 后无法插入新项目

c++ - 使用模板函数时 undefined reference

c++ - FD_ISSET() 是否返回接收数据的文件描述符

c++ - 尝试使用堆时出错

memory - 我们可以在内核模块中使用 virt_to_phys 作为用户空间内存吗?