锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
struct s1
{
char a;
double b;
int c;
char d;
};
struct s2
{
char a;
char b;
int c;
double d;
};
cout<<sizeof(s1)<<endl; // 24
cout<<sizeof(s2)<<endl; // 16
鍚屾牱鏄袱涓?/span>char綾誨瀷錛屼竴涓?/span>int綾誨瀷錛屼竴涓?/span>double綾誨瀷錛屼絾鏄洜涓哄鐣岄棶棰橈紝瀵艱嚧浠栦滑鐨勫ぇ灝忎笉鍚屻傝綆楃粨鏋勪綋澶у皬鍙互閲囩敤鍏冪礌鎽嗘斁娉曪紝鎴戜婦渚嬪瓙璇存槑涓涓嬶細棣栧厛錛?/span>CPU鍒ゆ柇緇撴瀯浣撶殑瀵圭晫錛屾牴鎹笂涓鑺傜殑緇撹錛?/span>s1鍜?/span>s2鐨勫鐣岄兘鍙栨渶澶х殑鍏冪礌綾誨瀷錛屼篃灝辨槸double綾誨瀷鐨勫鐣?/span>8銆傜劧鍚庡紑濮嬫憜鏀炬瘡涓厓绱犮?/span>
瀵逛簬s1錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?/span>0錛屾鏃朵笅涓涓┖闂茬殑鍦板潃鏄?/span>1錛屼絾鏄笅涓涓厓绱?/span>d鏄?/span>double綾誨瀷錛岃鏀懼埌8鐨勫鐣屼笂錛岀1鏈鎺ヨ繎鐨勫湴鍧鏄?/span>8浜嗭紝鎵浠?/span>d琚斁鍦ㄤ簡8錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?/span>16錛屼笅涓涓厓绱?/span>c鐨勫鐣屾槸4錛?/span>16鍙互婊¤凍錛屾墍浠?/span>c鏀懼湪浜?/span>16錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?/span>20錛屼笅涓涓厓绱?/span>d闇瑕佸鐣?/span>1錛屼篃姝eソ钀藉湪瀵圭晫涓婏紝鎵浠?/span>d鏀懼湪浜?/span>20錛岀粨鏋勪綋鍦ㄥ湴鍧21澶勭粨鏉熴傜敱浜?/span>s1鐨勫ぇ灝忛渶瑕佹槸8鐨勫嶆暟錛屾墍浠?/span>21-23鐨勭┖闂磋淇濈暀錛?/span>s1鐨勫ぇ灝忓彉鎴愪簡24銆?/span>
瀵逛簬s2錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?/span>0錛屾鏃朵笅涓涓┖闂插湴鍧鏄?/span>1錛屼笅涓涓厓绱犵殑瀵圭晫涔熸槸1錛屾墍浠?/span>b鎽嗘斁鍦?/span>1錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?/span>2錛涗笅涓涓厓绱?/span>c鐨勫鐣屾槸4錛屾墍浠ュ彇紱?/span>2鏈榪戠殑鍦板潃4鎽嗘斁c錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?/span>8錛屼笅涓涓厓绱?/span>d鐨勫鐣屾槸8錛屾墍浠?/span>d鎽嗘斁鍦?/span>8錛屾墍鏈夊厓绱犳憜鏀懼畬姣曪紝緇撴瀯浣撳湪15澶勭粨鏉燂紝鍗犵敤鎬葷┖闂翠負16錛屾濂芥槸8鐨勫嶆暟銆?/span>
榪欓噷鏈変釜闄烽槺錛屽浜庣粨鏋勪綋涓殑緇撴瀯浣撴垚鍛橈紝涓嶈璁や負瀹冪殑瀵歸綈鏂瑰紡灝辨槸浠栫殑澶у皬錛岀湅涓嬮潰鐨勪緥瀛愶細
struct s1
{
char a[8];
};
struct s2
{
double d;
};
struct s3
{
s1 s;
char a;
};
struct s4
{
s2 s;
char a;
};
cout<<sizeof(s1)<<endl; // 8
cout<<sizeof(s2)<<endl; // 8
cout<<sizeof(s3)<<endl; // 9
cout<<sizeof(s4)<<endl; // 16;
s1鍜?/span>s2澶у皬铏界劧閮芥槸8錛屼絾鏄?/span>s1鐨勫榻愭柟寮忔槸1錛?/span>s2鏄?/span>8錛?/span>double錛夛紝鎵浠ュ湪s3鍜?/span>s4涓墠鏈夎繖鏍風殑宸紓銆?/span>
鎵浠ワ紝鍦ㄨ嚜宸卞畾涔夌粨鏋勪綋鐨勬椂鍊欙紝濡傛灉絀洪棿绱у紶鐨勮瘽錛屾渶濂借冭檻瀵歸綈鍥犵礌鏉ユ帓鍒楃粨鏋勪綋閲岀殑鍏冪礌銆?/span>
]]>
went to "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"
and set Multi-threaded Debug (/MTd)
did build generated error messages...
then reset
"Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library"
to
Multi-threaded Debug DLL (/MDd)