ÎÒ¾õµÃ£¬£ð£ï£ò£ô£é£î£çµÄÎÊÌâÖ÷ÒªÓÐÈý¸ö´ó¿é£º
£±£¾£å£î£ä£é£á£îÎÊÌâ
£²¡µ¶ÔÆëÎÊÌâ
£³¡µÖ§³Ö¹ú¼Ê»¯µÄÎÊÌ⣨Ҳ¾ÍÊÇÄÜ·ñÖ§³Ö¸÷ÖÖ¹ú¼ÒÎÄ×Ö£¬»òÕß˵£é£±£¸£î£©
¶ÔÆëÎÊÌâ²Î¿¼£º
http://www.yuanma.org/data/2006/0723/article_1213.htm
˵µÄ̫͸³¹ÁË¡£¡¡
µ«ÊÇ £¬ ÀïÃæÓÐÒ»¾ä»°Ëµ´íÁË£¬ »òÕß²»¶Ô£¬
¾ÍÊÇ£º
|
|
ÔÚpc x86ÉϵÄÔËÐнá¹û£º
*p=0x78
*(p+3)=0x12
*pshort=0x3456
modified
*pshort=0xaabb
a=0x12aabb78
zlb size =7
££££££££££££££££££
ÔÚARMÉϵÄÔËÐнá¹û£¨Xscale ixp425 £¬ big-endian)
#
# ./test
*p=0x12
*(p+3)=0x78
*pshort=0x1234 //×¢ÒâÕâÀïµÄÇø±ð£¬ÕâÀïÊǹؼü£¬
modified
*pshort=0xaabb
a=0xaabb5678
zlb size =7
£££££
Ìû3£º
|
|
ÔÚÒÆÖ²ÉÏÃæÊDz»ºÃµÄ£¬Ò²¾ÍÊÇ__packed__×îºÃ²»ÒªÓᣡ¡Èç¹ûÒªÓã¬Ò²ÒªÈËΪÌî³ä£º
|
|
ÕâÑùÊDZȽϺÏÀíµÄ¡£¡¡¡¡¿Õ¼ä»»Ê±¼ä£¬ÃâµÃ±àÒëÆ÷ÊÜÀÛ¡£
££££££££££
Ìû4£º
| from : http://www.yuanma.org/data/2006/0723/article_1213.htm ÏÈÈÃÎÒÃÇ¿´ËĸöÖØÒªµÄ»ù±¾¸ÅÄ 1.Êý¾ÝÀàÐÍ×ÔÉíµÄ¶ÔÆëÖµ£º ¶ÔÓÚcharÐÍÊý¾Ý£¬Æä×ÔÉí¶ÔÆëֵΪ1£¬¶ÔÓÚshortÐÍΪ2£¬¶ÔÓÚint,float,doubleÀàÐÍ£¬Æä×ÔÉí¶ÔÆëֵΪ4£¬µ¥Î»×Ö½Ú¡£ 2.½á¹¹Ìå»òÕßÀàµÄ×ÔÉí¶ÔÆëÖµ£ºÆä³ÉÔ±ÖÐ×ÔÉí¶ÔÆëÖµ×î´óµÄÄǸöÖµ¡£ 3.Ö¸¶¨¶ÔÆëÖµ£º#pragma pack (value)ʱµÄÖ¸¶¨¶ÔÆëÖµvalue¡£ 4.Êý¾Ý³ÉÔ±¡¢½á¹¹ÌåºÍÀàµÄÓÐЧ¶ÔÆëÖµ£º×ÔÉí¶ÔÆëÖµºÍÖ¸¶¨¶ÔÆëÖµÖÐСµÄÄǸöÖµ¡£ ÓÐ ÁËÕâЩֵ£¬ÎÒÃǾͿÉÒԺܷ½±ãµÄÀ´ÌÖÂÛ¾ßÌåÊý¾Ý½á¹¹µÄ³ÉÔ±ºÍÆä×ÔÉíµÄ¶ÔÆë·½Ê½¡£ÓÐЧ¶ÔÆëÖµNÊÇ×îÖÕÓÃÀ´¾ö¶¨Êý¾Ý´æ·ÅµØÖ··½Ê½µÄÖµ£¬×îÖØÒª¡£ÓÐЧ¶ÔÆëN£¬¾ÍÊÇ ±íʾ¡°¶ÔÆëÔÚNÉÏ¡±£¬Ò²¾ÍÊÇ˵¸ÃÊý¾ÝµÄ"´æ·ÅÆðʼµØÖ·%N=0".¶øÊý¾Ý½á¹¹ÖеÄÊý¾Ý±äÁ¿¶¼Êǰ´¶¨ÒåµÄÏȺó˳ÐòÀ´Åŷŵġ£µÚÒ»¸öÊý¾Ý±äÁ¿µÄÆðʼµØÖ·¾ÍÊÇÊý ¾Ý½á¹¹µÄÆðʼµØÖ·¡£½á¹¹ÌåµÄ³ÉÔ±±äÁ¿Òª¶ÔÆëÅÅ·Å£¬½á¹¹Ìå±¾ÉíÒ²Òª¸ù¾Ý×ÔÉíµÄÓÐЧ¶ÔÆëÖµÔ²Õû(¾ÍÊǽṹÌå³ÉÔ±±äÁ¿Õ¼ÓÃ×ܳ¤¶ÈÐèÒªÊǶԽṹÌåÓÐЧ¶ÔÆëÖµµÄÕûÊý ±¶ |
££££££££££££
ÉÏÃæÕâ¾ä»°±¾ÉíÀ´½²£¬Ã»ÓÐʲôÎÊÌ⣬µ«ÊÇ¡¡ËƺõÕâ¾äÓÐÎÊÌ⣺¡°4.Êý¾Ý³ÉÔ±¡¢½á¹¹ÌåºÍÀàµÄÓÐЧ¶ÔÆëÖµ£º×ÔÉí¶ÔÆëÖµºÍÖ¸¶¨¶ÔÆëÖµÖÐСµÄÄǸöÖµ¡£¡±¡¡¡¡¡¡Ó¦¸Ã¸ÄΪ¡¡£¢ÓÐЧ¶ÔÆëÖµÊÇ×ÔÉí¶ÔÆëÖµºÍÖ¸¶¨¶ÔÆëÖµÖдóµÄÄǸö¡¡¡¡£¢¡¡¡¡¡¡ÏÔȻӦ¸ÃÊÇ´óµÄÄǸö¡¡¡£¡¡¡¡
Ϊ´ËרÃÅÑéÖ¤ÁËһϡ¡£º
×¢Ò⣺ #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ¾ÍÊǼÆËãÆ«ÒÆµÄ£¬ ÕâÑù²ÅºÃÖªµÀ±àÒëÆ÷ÊÇÈçºÎ´æ·ÅÎÒÃǵıäÁ¿µÄ¡£
|
|
Ö´Ðнá¹û£º
pc x86 £¨armÉÏÒ²ÊÇÈç´Ë£©
size of zlb = 24
offset a=0
offset b=4
offset c=8
offset d=12
offset e=16
size of bob struct =48
offset a=0
offset struct zlb=8 //ÔõôÑù£¿ ȷʵÊÇ 8 ,¶ø²»ÊÇ 4°É£¿ ËùÒÔ×÷Õߵϰ´íÁË¡£ ½á¹¹ÌåµÄÓÐЧ¶ÔÆëÖµÓ¦¸ÃÊÇ ½á¹¹Ìå×ÔÉí¶ÔÆëÖµºÍ Ö¸¶¨¶ÔÆëÖµ£¨»òĬÈÏ¶ÔÆëÖµ£©½Ï´óµÄÄǸö
offset b=32
offset c=34



