¡¡ ¡¡¡¡ void¡¡*malloc£¨size_t¡¡size£©,¡¡ ¡¡¡¡ size_t¡¡fread(void¡¡*¡¡ptr,size_t¡¡size,size_t¡¡nmemb,FILE¡¡*¡¡stream)¡£¡¡ ¡¡¡¡ 2¡¢sizeofµÄÁíÒ»¸öµÄÖ÷ÒªÓÃ;ÊǼÆËãÊý×éÖÐÔªËصĸöÊý¡£ÀýÈ磺¡¡ ¡¡¡¡ void¡¡*¡¡memset£¨void¡¡*¡¡s,int¡¡c,sizeof(s)£©¡£¡¡ Áù¡¢½¨Òé¡¡ ¡¡¡¡ÓÉÓÚ²Ù×÷ÊýµÄ×Ö½ÚÊýÔÚʵÏÖʱ¿ÉÄܳöÏֱ仯£¬½¨ÒéÔÚÉæ¼°µ½²Ù×÷Êý×Ö½Ú´óСʱÓÃsizeofÀ´´úÌæ³£Á¿¼ÆËã¡£ ============================================================= ±¾ÎÄÖ÷Òª°üÀ¨¶þ¸ö²¿·Ö£¬µÚÒ»²¿·ÖÖصã½éÉÜÔÚVCÖУ¬ÔõôÑù²ÉÓÃsizeofÀ´Çó½á¹¹µÄ´óС£¬ÒÔ¼°ÈÝÒ׳öÏÖµÄÎÊÌ⣬²¢¸ø³ö½â¾öÎÊÌâµÄ·½·¨£¬µÚ¶þ²¿·Ö×ܽá³öVCÖÐsizeofµÄÖ÷ÒªÓ÷¨¡£ 1¡¢ sizeofÓ¦ÓÃÔڽṹÉϵÄÇé¿ö Çë¿´ÏÂÃæµÄ½á¹¹£º struct MyStruct { double dda1; char dda; int type }; ¶Ô½á¹¹MyStruct²ÉÓÃsizeof»á³öÏÖʲô½á¹ûÄØ£¿sizeof(MyStruct)Ϊ¶àÉÙÄØ£¿Ò²ÐíÄã»áÕâÑùÇó£º sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13 µ«Êǵ±ÔÚVCÖвâÊÔÉÏÃæ½á¹¹µÄ´óСʱ£¬Äã»á·¢ÏÖsizeof(MyStruct)Ϊ16¡£ÄãÖªµÀΪʲôÔÚVCÖлáµÃ³öÕâÑùÒ»¸ö½á¹ûÂ𣿠Æäʵ£¬ÕâÊÇVC¶Ô±äÁ¿´æ´¢µÄÒ»¸öÌØÊâ´¦Àí¡£ÎªÁËÌá¸ßCPUµÄ´æ´¢Ëٶȣ¬VC¶ÔһЩ±äÁ¿µÄÆðʼµØÖ·×öÁË"¶ÔÆë"´¦Àí¡£ÔÚĬÈÏÇé¿öÏ£¬VC¹æ¶¨¸÷³ÉÔ±±äÁ¿´æ·ÅµÄÆðʼµØÖ·Ïà¶ÔÓڽṹµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿±ØÐëΪ¸Ã±äÁ¿µÄÀàÐÍËùÕ¼ÓõÄ×Ö½ÚÊýµÄ±¶Êý¡£ÏÂÃæÁгö³£ÓÃÀàÐ͵ĶÔÆ뷽ʽ(vc6.0,32λϵͳ)¡£ ÀàÐÍ ¶ÔÆ뷽ʽ£¨±äÁ¿´æ·ÅµÄÆðʼµØÖ·Ïà¶ÔÓڽṹµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿£© Char Æ«ÒÆÁ¿±ØÐëΪsizeof(char)¼´1µÄ±¶Êý int Æ«ÒÆÁ¿±ØÐëΪsizeof(int)¼´4µÄ±¶Êý float Æ«ÒÆÁ¿±ØÐëΪsizeof(float)¼´4µÄ±¶Êý double Æ«ÒÆÁ¿±ØÐëΪsizeof(double)¼´8µÄ±¶Êý Short Æ«ÒÆÁ¿±ØÐëΪsizeof(short)¼´2µÄ±¶Êý ¸÷³ÉÔ±±äÁ¿ÔÚ´æ·ÅµÄʱºò¸ù¾ÝÔڽṹÖгöÏÖµÄ˳ÐòÒÀ´ÎÉêÇë¿Õ¼ä£¬Í¬Ê±°´ÕÕÉÏÃæµÄ¶ÔÆ뷽ʽµ÷ÕûλÖ㬿ÕȱµÄ×Ö½ÚVC»á×Ô¶¯Ìî³ä¡£Í¬Ê±VCΪÁËÈ·±£½á¹¹µÄ´óСΪ½á¹¹µÄ×ֽڱ߽çÊý£¨¼´¸Ã½á¹¹ÖÐÕ¼ÓÃ×î´ó¿Õ¼äµÄÀàÐÍËùÕ¼ÓõÄ×Ö½ÚÊý£©µÄ±¶Êý£¬ËùÒÔÔÚΪ×îºóÒ»¸ö³ÉÔ±±äÁ¿ÉêÇë¿Õ¼äºó£¬»¹»á¸ù¾ÝÐèÒª×Ô¶¯Ìî³ä¿ÕȱµÄ×Ö½Ú¡£ ÏÂÃæÓÃÇ°ÃæµÄÀý×ÓÀ´ËµÃ÷VCµ½µ×ÔõôÑùÀ´´æ·Å½á¹¹µÄ¡£ struct MyStruct { double dda1; char dda; int type }£» ΪÉÏÃæµÄ½á¹¹·ÖÅä¿Õ¼äµÄʱºò£¬VC¸ù¾Ý³ÉÔ±±äÁ¿³öÏÖµÄ˳ÐòºÍ¶ÔÆ뷽ʽ£¬ÏÈΪµÚÒ»¸ö³ÉÔ±dda1·ÖÅä¿Õ¼ä£¬ÆäÆðʼµØÖ·¸ú½á¹¹µÄÆðʼµØÖ·Ïàͬ£¨¸ÕºÃÆ«ÒÆÁ¿0¸ÕºÃΪsizeof(double)µÄ±¶Êý£©£¬¸Ã³ÉÔ±±äÁ¿Õ¼ÓÃsizeof(double)=8¸ö×Ö½Ú£»½ÓÏÂÀ´ÎªµÚ¶þ¸ö³ÉÔ±dda·ÖÅä¿Õ¼ä£¬ÕâʱÏÂÒ»¸ö¿ÉÒÔ·ÖÅäµÄµØÖ·¶ÔÓڽṹµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿Îª8£¬ÊÇsizeof(char)µÄ±¶Êý£¬ËùÒÔ°Ñdda´æ·ÅÔÚÆ«ÒÆÁ¿Îª8µÄµØ·½Âú×ã¶ÔÆ뷽ʽ£¬¸Ã³ÉÔ±±äÁ¿Õ¼Óà sizeof(char)=1¸ö×Ö½Ú£»½ÓÏÂÀ´ÎªµÚÈý¸ö³ÉÔ±type·ÖÅä¿Õ¼ä£¬ÕâʱÏÂÒ»¸ö¿ÉÒÔ·ÖÅäµÄµØÖ·¶ÔÓڽṹµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿Îª9£¬²»ÊÇsizeof (int)=4µÄ±¶Êý£¬ÎªÁËÂú×ã¶ÔÆ뷽ʽ¶ÔÆ«ÒÆÁ¿µÄÔ¼ÊøÎÊÌ⣬VC×Ô¶¯Ìî³ä3¸ö×Ö½Ú£¨ÕâÈý¸ö×Ö½ÚûÓзÅʲô¶«Î÷£©£¬ÕâʱÏÂÒ»¸ö¿ÉÒÔ·ÖÅäµÄµØÖ·¶ÔÓڽṹµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿Îª12£¬¸ÕºÃÊÇsizeof(int)=4µÄ±¶Êý£¬ËùÒÔ°Ñtype´æ·ÅÔÚÆ«ÒÆÁ¿Îª12µÄµØ·½£¬¸Ã³ÉÔ±±äÁ¿Õ¼ÓÃsizeof(int)=4¸ö×Ö½Ú£»ÕâʱÕû¸ö½á¹¹µÄ³ÉÔ±±äÁ¿ÒѾ¶¼·ÖÅäÁ˿ռ䣬×ܵÄÕ¼ÓõĿռä´óСΪ£º8+1+3+4=16£¬¸ÕºÃΪ½á¹¹µÄ×ֽڱ߽çÊý£¨¼´½á¹¹ÖÐÕ¼ÓÃ×î´ó¿Õ¼äµÄÀàÐÍËùÕ¼ÓõÄ×Ö½ÚÊýsizeof(double)=8£©µÄ±¶Êý£¬ËùÒÔûÓпÕȱµÄ×Ö½ÚÐèÒªÌî³ä¡£ËùÒÔÕû¸ö½á¹¹µÄ´óСΪ£ºsizeof(MyStruct)=8+1+ 3+4=16£¬ÆäÖÐÓÐ3¸ö×Ö½ÚÊÇVC×Ô¶¯Ìî³äµÄ£¬Ã»ÓзÅÈκÎÓÐÒâÒåµÄ¶«Î÷¡£ ÏÂÃæÔپٸöÀý×Ó£¬½»»»Ò»ÏÂÉÏÃæµÄMyStructµÄ³ÉÔ±±äÁ¿µÄλÖã¬Ê¹Ëü±ä³ÉÏÂÃæµÄÇé¿ö£º struct MyStruct { char dda; double dda1; int type }£» Õâ¸ö½á¹¹Õ¼ÓõĿռäΪ¶à´óÄØ£¿ÔÚVC6.0»·¾³Ï£¬¿ÉÒԵõ½sizeof(MyStruc)Ϊ24¡£½áºÏÉÏÃæÌáµ½µÄ·ÖÅä¿Õ¼äµÄһЩÔÔò£¬·ÖÎöÏÂVCÔõôÑùΪÉÏÃæµÄ½á¹¹·ÖÅä¿Õ¼äµÄ¡££¨¼òµ¥ËµÃ÷£© struct MyStruct { char dda;//Æ«ÒÆÁ¿Îª0£¬Âú×ã¶ÔÆ뷽ʽ£¬ddaÕ¼ÓÃ1¸ö×Ö½Ú£» double dda1;//ÏÂÒ»¸ö¿ÉÓõĵØÖ·µÄÆ«ÒÆÁ¿Îª1£¬²»ÊÇsizeof(double)=8 //µÄ±¶Êý£¬ÐèÒª²¹×ã7¸ö×Ö½Ú²ÅÄÜʹƫÒÆÁ¿±äΪ8£¨Âú×ã¶ÔÆë //·½Ê½£©£¬Òò´ËVC×Ô¶¯Ìî³ä7¸ö×Ö½Ú£¬dda1´æ·ÅÔÚÆ«ÒÆÁ¿Îª8 //µÄµØÖ·ÉÏ£¬ËüÕ¼ÓÃ8¸ö×Ö½Ú¡£ int type£»//ÏÂÒ»¸ö¿ÉÓõĵØÖ·µÄÆ«ÒÆÁ¿Îª16£¬ÊÇsizeof(int)=4µÄ±¶ //Êý£¬Âú×ãintµÄ¶ÔÆ뷽ʽ£¬ËùÒÔ²»ÐèÒªVC×Ô¶¯Ìî³ä£¬type´æ //·ÅÔÚÆ«ÒÆÁ¿Îª16µÄµØÖ·ÉÏ£¬ËüÕ¼ÓÃ4¸ö×Ö½Ú¡£ }£»//ËùÓгÉÔ±±äÁ¿¶¼·ÖÅäÁ˿ռ䣬¿Õ¼ä×ܵĴóСΪ1+7+8+4=20£¬²»Êǽṹ //µÄ½Ú±ß½çÊý£¨¼´½á¹¹ÖÐÕ¼ÓÃ×î´ó¿Õ¼äµÄÀàÐÍËùÕ¼ÓõÄ×Ö½ÚÊýsizeof //(double)=8£©µÄ±¶Êý£¬ËùÒÔÐèÒªÌî³ä4¸ö×Ö½Ú£¬ÒÔÂú×ã½á¹¹µÄ´óСΪ //sizeof(double)=8µÄ±¶Êý¡£ ËùÒԸýṹ×ܵĴóСΪ£ºsizeof(MyStruc)Ϊ1+7+8+4+4=24¡£ÆäÖÐ×ܵÄÓÐ7+4=11¸ö×Ö½ÚÊÇVC×Ô¶¯Ìî³äµÄ£¬Ã»ÓзÅÈκÎÓÐÒâÒåµÄ¶«Î÷¡£ VC¶Ô½á¹¹µÄ´æ´¢µÄÌØÊâ´¦ÀíȷʵÌá¸ßCPU´æ´¢±äÁ¿µÄËٶȣ¬µ«ÊÇÓÐʱºòÒ²´øÀ´ÁËһЩÂé·³£¬ÎÒÃÇÒ²ÆÁ±Îµô±äÁ¿Ä¬ÈϵĶÔÆ뷽ʽ£¬×Ô¼º¿ÉÒÔÉ趨±äÁ¿µÄ¶ÔÆ뷽ʽ¡£ VC ÖÐÌṩÁË#pragma pack(n)À´É趨±äÁ¿ÒÔn×Ö½Ú¶ÔÆ뷽ʽ¡£n×Ö½Ú¶ÔÆë¾ÍÊÇ˵±äÁ¿´æ·ÅµÄÆðʼµØÖ·µÄÆ«ÒÆÁ¿ÓÐÁ½ÖÖÇé¿ö£ºµÚÒ»¡¢Èç¹ûn´óÓÚµÈÓڸñäÁ¿ËùÕ¼ÓõÄ×Ö½ÚÊý£¬ÄÇôƫÒÆÁ¿±ØÐëÂú×ãĬÈϵĶÔÆ뷽ʽ£¬µÚ¶þ¡¢Èç¹ûnСÓڸñäÁ¿µÄÀàÐÍËùÕ¼ÓõÄ×Ö½ÚÊý£¬ÄÇôƫÒÆÁ¿ÎªnµÄ±¶Êý£¬²»ÓÃÂú×ãĬÈϵĶÔÆ뷽ʽ¡£½á¹¹µÄ×Ü´óСҲÓиöÔ¼ÊøÌõ¼þ£¬·ÖÏÂÃæÁ½ÖÖÇé¿ö£ºÈç¹ûn |