Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C/C++½á¹¹Ìå×Ö½Ú¶ÔÆë


[×¢]£º×î½üÔÚ×öUVCÃèÊö·ûµÄ±à¼­¹¤¾ß£¬Óõ½ºÜ¶àµÄ½á¹¹£¬ÎªÁË·½±ã°Ñ½á¹¹Ìåд³ÉbinÎļþ£¬ÐèÒª°Ñ½á¹¹ÌåÖÐÌî³äµÄ×Ö½ÚÈ¥µô£¬ÔÚÍøÉÏËÑË÷µÃµ½ÕâÆªÎÄÕ£¬¸Ð¾õͦºÃµÄ£¬×ª¹ýÀ´×ö¸ö¼ÍÄî¡£
½á¹¹Ìå(struct)µÄsizeofÖµ£¬²¢²»ÊǼòµ¥µÄ½«ÆäÖи÷ÔªËØËùÕ¼×Ö½ÚÏà¼Ó£¬¶øÊÇÒª¿¼Âǵ½´æ´¢¿Õ¼äµÄ×Ö½Ú¶ÔÆëÎÊÌâ¡£ÏÈ¿´ÏÂÃæ¶¨ÒåµÄÁ½¸ö½á¹¹Ìå.
struct
{
    char a;
    short b;
    char c;
}S1;
struct
{
    char a;
    char b;
    short c;
}S2;
·Ö±ðÓóÌÐò²âÊԵóösizeof(S1)=6 , sizeof(S2)=4
¿É¼û£¬ËäÈ»Á½¸ö½á¹¹ÌåËùº¬µÄÔªËØÏàͬ£¬µ«ÒòΪÆäÖдæ·ÅµÄÔªËØÀàÐÍ˳Ðò²»Ò»Ñù£¬ËùÕ¼×Ö½ÚÒ²³öÏÖ²îÒì¡£Õâ¾ÍÊÇ×Ö½Ú¶ÔÆëÔ­Òò¡£Í¨¹ý×Ö½Ú¶ÔÆë£¬ÓÐÖúÓÚ¼Ó¿ì¼ÆËã»úµÄÈ¡ÊýËÙ¶È£¬·ñÔò¾ÍµÃ¶à»¨Ö¸ÁîÖÜÆÚ¡£
×Ö½Ú¶ÔÆëÔ­Ôò
½á¹¹ÌåĬÈϵÄ×Ö½Ú¶ÔÆëÒ»°ãÂú×ãÈý¸ö×¼Ôò£º
1) ½á¹¹Ìå±äÁ¿µÄÊ×µØÖ·Äܹ»±»Æä×î¿í»ù±¾ÀàÐͳÉÔ±µÄ´óСËùÕû³ý£»
2) ½á¹¹Ìåÿ¸ö³ÉÔ±Ïà¶ÔÓڽṹÌåÊ×µØÖ·µÄÆ«ÒÆÁ¿£¨offset£©¶¼ÊdzÉÔ±×ÔÉí´óСµÄÕûÊý±¶£¬ÈçÓÐÐèÒª±àÒëÆ÷»áÔÚ³ÉÔ±Ö®¼ä¼ÓÉÏÌî³ä×Ö½Ú£¨internal adding£©£»
3) ½á¹¹ÌåµÄ×Ü´óСΪ½á¹¹Ìå×î¿í»ù±¾ÀàÐͳÉÔ±´óСµÄÕûÊý±¶£¬ÈçÓÐÐèÒª±àÒëÆ÷»áÔÚ×îĩһ¸ö³ÉÔ±Ö®ºó¼ÓÉÏÌî³ä×Ö½Ú£¨trailing padding£©¡£
ͨ¹ýÕâÈý¸öÔ­Ôò£¬¾Í²»ÄÑÀí½âÉÏÃæÁ½¸östructµÄ²îÒìÁË.
¶ÔÓÚstruct S1, ΪÁËʹshort±äÁ¿Âú×ã×Ö½Ú¶ÔÆä×¼Ôò(2), ¼´Æä´æ´¢Î»ÖÃÏà¶ÔÓڽṹÌåÊ×µØÖ·µÄoffsetÊÇ×ÔÉí´óС(shortÕ¼2¸ö×Ö½Ú)µÄÕûÊý±¶£¬±ØÐëÔÚ×Ö½ÚaºóÃæÌî³äÒ»¸ö×Ö½ÚÒÔ¶ÔÆë£»ÔÙÓÉ×¼Ôò(3),ΪÁË Âú×ã½á¹¹Ìå×Ü´óСΪshort´óСµÄÕûÊý±¶£¬±ØÐëÔÙÔÚcºóÃæÌî³äÒ»¸ö×Ö½Ú¡£
¶ÔÓÚstruct S2, È´²»±ØÈçÉÏËùÊöµÄÌî³ä×Ö½Ú£¬ÒòΪÆäÖ±½Ó˳Ðò´æ´¢ÒѾ­Âú×ãÁË¶ÔÆë×¼Ôò¡£
Èç¹û½«ÉÏÃæÁ½¸ö½á¹¹ÌåÖеÄshort¶¼¸ÄΪint(Õ¼4¸ö×Ö½Ú), ÄÇô»áÔõôÑùÄØ£¿ ³ÌÐòµÃ³ösizeof(S1)=12, sizeof(S2)=8
ÀûÓÃÉÏÃæµÄ×¼Ôò£¬Ò²²»ÄѼÆËãµÃ³öÕâÑùµÄ½á¹û¡£S1ÖÐÔÚaºóÃæÌî³ä3¸ö×Ö½Ú¡¢ÔÚcºóÃæÌî³ä3¸ö×Ö½Ú£¬ÕâÑùÒ»¹²12¸ö×Ö½Ú£»S2ÖÐÔÚa¡¢b˳Ðò´æ´¢Ö®ºóÌî³äÁ½¸ö×Ö½ÚÓÃÒÔ¶ÔÆä£¬ÕâÑùÒ»¹²¾Í8¸ö×Ö½Ú¡£
µ±È»£¬ÔÚijЩʱºòÒ²¿ÉÒÔÉèÖÃ×Ö½Ú¶ÔÆë·½Ê½¡£Õâ¾ÍÐèҪʹÓà #pragma pack ¡£
#pragma pack(push) //ѹջ±£´æ
#pragma pack(1)// ÉèÖÃ1×Ö½Ú¶ÔÆë
struct
{
char a;
short b;
char c;
}S1;
#pragma pack(pop) // »Ö¸´ÏÈǰÉèÖÃ
ÈçÉÏËùʾ£¬½«¶ÔÆä·½Ê½ÉèΪ1×Ö½Ú¶ÔÆë£


Ïà¹ØÎĵµ£º

cÍ·Îļþ×îºóÒª¼ÓÒ»¸ö¿ÕÐÐ,ÖªµÀΪʲôÂ

 ÒÔǰѧÉúʱ´úµÄʱºò¾ÍÓÐÓöµ½¹ýÕâ¸öÎÊÌ⣬²»¹ýûȥÉ£»
ÏÖÔÚÒ²ÊÇÀÏÎÊÌ⣬ÆäʵºÜ¼òµ¥£¬¾ÍÊÇΪÁË·ÀÖ¹#includeÁ½¸öÍ·ÎļþµÄʱºò£¬°ÑµÚÒ»¸öÍ·ÎļþµÄ×îºóÒ»ÐÐºÍ µÚ¶þ¸öÍ·ÎļþµÄµÚÒ»ÐÐÆ´½Ó³ÉÒ»ÐУ»ºÇºÇ£¬ÆäʵºÜ¶àÎÊÌâ¶¼ºÜ¼òµ¥£¬¶øÇÒºÜÒþ±Î£¬Ö»ÊÇÎÒÃǺܶàʱºòûȥעÒ⣡ ......

C/C++³ÌÐòÔ±Á½ÄêÀú³Ì (1)

  ²»Öª²»¾õÒѾ­¹¤×÷Á½ÄêÁË£¬´ÇÈ¥ÁËÔ­À´µÄ¹¤×÷£¬ÓÖÅÜ»ØÁËÎÒÉÏѧµÄµØ·½¡£½ñÌìÅÜÈ¥Ò»¼ÒÊÒÓѽéÉܵĹ«Ë¾ÃæÊÔ¡£ÎʵÃÎÊÌâͦ¼òµ¥£¬µ«ÎÒ´ðµÄÈ´Õæ²»ÔõôµØ°¡¡£»ØÀ´ÓÖÑо¿ÁËһϣ¬·¢ÏÖÕâЩÎÊÌâÎÒÓ¦¸Ã¶¼Àí½â°¡£¬Ôõôµ½±ðÈËÎÊÆðµÄʱºò¾ÍÈ«ÍüÁËÒ»°ãÄØ¡£ÏëÏëÁË·¢ÏÖ»¹ÊÇѧµÄ²»µ½Î»¡£²»½ûÓÖÏëÆðÁËÕâô¶àÄêÀ´£¬ÎÒ¶¼Ñ§µ½ÁËʲô¶«Î÷ÄØ¡£
& ......

CºÍC++±à³ÌºÍѧϰÎĵµ

 CºÍC++±à³ÌºÍѧϰÎĵµ
1  :Ö¸Õë±äÁ¿Ãû³ÆÒÔpΪÊ××Ö·û£¬ÕâÊdzÌÐòԱͨ³£ÔÚ¶¨ÒåÖ¸ÕëʱµÄÒ»¸öϰ¹ß
2  :har * p;    (int *)p °ÑpÇ¿ÖÆ×ª»»ÎªintÐÍ                        ......

C/C++ Ö¸Ïò×ÓÀà¶ÔÏóµÄ»ùÀàÖ¸Õë

ÓÐÈçϳÌÐò£º
//-----------------
class A
{
public:
A()
{
printf( "base A\r\n" );
}
virtual ~A()
{
printf( "base ~A\r\n" );
}
public:
virtual void VirtualFunc()
{
printf( "base VirtualFunc\r\n" );
};
void Func()
{
printf( "base Func\r\n" );
}
void F1()
{
pr ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ