刚学了4或8内存对齐,就来了这道题。
内存对齐会发生在虚拟内存空间还是绝对地址中?
我猜答案是虚拟内存空间,操作系统会将进程加载到绝对地址以'0X00'或'0X0'结尾的位置。
如果不是,请告诉我原因。多谢。 XD
最佳答案
在适当的情况下,虚拟地址和实际地址都将与 CPU 的 native 字长字对齐 (*)。 (原因是虚拟到物理的映射是在每页的基础上完成的,内存页的大小始终是 CPU 的 native 字大小的偶数倍)。
(*) 异常(exception)情况是小于一个单词的项目,并且连续打包以节省内存;例如char
和 uint_8
数组中的许多单独元素不一定是字对齐的。
关于c++ - Will process load into memory with 4 or 8 对齐规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469349/