看板 C_and_CPP 關於我們 聯絡資訊
最近在使用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://www.ptt.cc/bbs/C_and_CPP/M.1495724716.A.73A.html
LPH66: 你可能把 sizeof 跟 alignof 搞混了 05/26 00:19
LPH66: 一個東西比較大並不代表它就要排在大位置 05/26 00:21
hpyhacking: 位址比較大小沒有意義 05/26 02:25
JFLung9536: 不一定會被8整除阿 05/26 06:38