hex*_*ecs 10 c memory-management
这是我的测试代码:
#include <cstdio>
struct A {
int a;
int b;
int c __attribute__((aligned(4096)));
int d;
}t;
int main()
{
printf("%d\n",sizeof(t));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是8192,但我无法弄清楚原因.
rod*_*igo 12
关于结构中的对齐有一些值得一提的事实:
因此,由于其中一个成员的对齐方式为4096,因此结构本身的对齐方式至少为4096.很可能就是这样.
但由于它之前需要4080字节的填充,c结构的大小至少为4104,但它必须是多个4096,它的对齐.所以它增长到8192.