内存对齐
内存对齐
#include <cstdio>
#include <cstdlib>
#include <atomic>
// g++ mem_align.cpp -Wall -O2
struct TestAlign {
int64_t a;
char b;
int64_t c;
};
int main() {
// glibc 的实现(Linux 默认 C 库): malloc 在 64 位系统上默认对齐到 16 字节
TestAlign ta1{1, 'a', 2};
int8_t *p1 = (int8_t *)&ta1;
printf("data: %c\n", *(char *)(p1 + 8)); // 应该是a
printf("data: %ld\n", *(int64_t *)(p1 + 16)); // 应该是2
printf("atomic size: %ld\n", sizeof(std::atomic<int>));
return 0;
}
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Moyin!