gpt4 book ai didi

c - 将地址空间除以 8

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:33 25 4
gpt4 key购买 nike

我的问题是关于地址空间的处理。

我有两个十六进制的地址空间:0x7fffff09 和 0x7fffff08。

我如何知道它们是否可被 8 整除或 8 字节对齐?就像检查在 C 或 C++ 代码中的样子一样。我知道您通常对常规数字使用 mod,如果没有余数,那么您就知道它是可整除的。

编辑:地址空间可以是__8、__16、__32(8位、16位、32位)

最佳答案

8 字节对齐取决于架构。

8字节整除只是模运算。将指针复制到足够大的 int 并执行 % 8。

#include <stdint.h>
void *addr = ....
uintptr_t i = (uintptr_t)addr;
i = i % 8

当然,你可以把它放在一个函数中:

int isEightByteDivisible(const void *addr) {
return ((uintptr_t)addr % 8) == 0
}

另见 Determining the alignment of C/C++ structures in relation to its members对齐问题。

关于c - 将地址空间除以 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19792773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com