来源:
http://www.cnblogs.com/TenosDoIt/p/3590491.html
class node
{
char c;
int i;
short s;
}no;
class node
{
char c; //放在位置0,位置区间[0]
int i; //4 = n, 那么放置起始位置应该是4的倍数,即4,位置区间为[4~7]
short s; //2 < n,那么放置起始位置应该是2的倍数,即8,位置区间为[8~9]
}
class node
{
int i; //放在位置0,位置区间[0~3]
char c; //1 < n, 那么放置起始位置应该是1的倍数,即4,位置区间为[4]
short s; //2 < n,那么放置起始位置应该是2的倍数,即6,位置区间为[6~7]
}
class node
{
char c; //放在位置0,位置区间[0]
int i; //4 > n, 那么放置起始位置应该是2的倍数,即2,位置区间为[2~5]
short s; //2 = n,那么放置起始位置应该是2的倍数,即6,位置区间为[6~7]
}
class temp
{
char c;
int i;
short s1;
};
class node
{
char c; //放在位置0,位置区间[0]
temp t; //4(temp的对齐字节数) = n, 那么放置起始位置应该是4的倍数,即4,位置区间为[4~15]
short s; //2 < n,那么放置起始位置应该是2的倍数,即16,位置区间为[16~17]
}
class node
{
temp t; //放在位置0,位置区间[0~11]
double d; //8(temp的对齐字节数) = n, 那么放置起始位置应该是8的倍数,即16,位置区间为[16~23]
short s; //2 < n,那么放置起始位置应该是2的倍数,即24,位置区间为[24~25]
}
class A
{
int i;
char c1;
}
class B:public A
{
char c2;
}
class C:public B
{
char c3;
}
sizeof(C)结果是多少呢,gcc和vs给出了不同的结果,分别是8、16
原文始发于微信公众号(汇编语言):C++ 内存对齐
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论