check alloc alignment

作者: HILL33LOVE (就是愛希爾)   2017-05-25 23:05:14
最近在使用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
謝謝
作者: LPH66 (-6.2598534e+18f)   2017-05-26 00:19:00
你可能把 sizeof 跟 alignof 搞混了一個東西比較大並不代表它就要排在大位置
作者: hpyhacking (駭人聽聞)   2017-05-26 02:25:00
位址比較大小沒有意義
作者: JFLung9536 (立月小蛇)   2017-05-26 06:38:00
不一定會被8整除阿

Links booklink

Contact Us: admin [ a t ] ucptt.com