gcc (GCC) 4.1.2 20070115 (prerelease) (SUSE Linux x86-64)
"&结构A" = 0x00007fffe23b0770 结构长度304 0x130
"&结构B" = 0x7fffe23b08a0 结构长度296 0x128
中间差了8个字节
"&char数组A[0]" = 0x00007fffe23b09d0 数组长度100 0x64
中间差了12个字节
"&结构C" = 0x7fffe23b0a40 结构长度64 0x41
中间差15个字节
"&结构D" = 0x00007fffe23b0a90 结构长度64 0x40
中间差4个字节
"&32位整型A" = 0x00007fffe23b0ad4
"&指针B" = 0x00007fffe23b0ad8 指针
"&指针C" = 0x00007fffe23b0738 指针
可见,结构/数组在16个字节边界处对齐了
"&结构A" = 0x00007fffe23b0770 结构长度304 0x130
"&结构B" = 0x7fffe23b08a0 结构长度296 0x128
中间差了8个字节
"&char数组A[0]" = 0x00007fffe23b09d0 数组长度100 0x64
中间差了12个字节
"&结构C" = 0x7fffe23b0a40 结构长度64 0x41
中间差15个字节
"&结构D" = 0x00007fffe23b0a90 结构长度64 0x40
中间差4个字节
"&32位整型A" = 0x00007fffe23b0ad4
"&指针B" = 0x00007fffe23b0ad8 指针
"&指针C" = 0x00007fffe23b0738 指针
可见,结构/数组在16个字节边界处对齐了
本文详细解析了使用GCC 4.1.2编译时,不同数据结构与数组在内存中的对齐方式及对齐原则。通过对具体实例的分析,展示了结构体、数组等在16字节边界对齐的现象,帮助理解内存布局与优化。
2470

被折叠的 条评论
为什么被折叠?



