作者HILL33LOVE (就是爱希尔)
看板C_and_CPP
标题check alloc alignment
时间Thu May 25 23:05:14 2017
最近在使用lib在alloc记忆体时,会需要检查当初alloc时的位址的alignment
如下面
#define alignof __alignof
#define ISALIGNED_N(ptr, n) (((uintptr_t)(ptr) & ((n) - 1)) == 0)
if (!ISALIGNED_N(mem, alignof(unsigned long long)))
printf(“check align fail!\n”);
else
printf(“check align ok!\n”);
很好奇为甚麽下面位址都是check align ok
alignof(unsigned long long)不是代表位址可以被8整除吗?
0x7f4a5c0191cc
0x7f4a5c0391e4
0x7f4a5c0591fc
0x7f4a5c079214
0x7f4a5c09922c
0x7f4a5c0b9244
0x7f4a5c0d925c
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.44.157.15
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1495724716.A.73A.html
1F:推 LPH66: 你可能把 sizeof 跟 alignof 搞混了 05/26 00:19
2F:→ LPH66: 一个东西比较大并不代表它就要排在大位置 05/26 00:21
3F:推 hpyhacking: 位址比较大小没有意义 05/26 02:25
4F:推 JFLung9536: 不一定会被8整除阿 05/26 06:38