¡¡¡¡Ö¸ÕëÊÇÒ»ÖÖ±£´æµØÖ·µÄÊý¾ÝÀàÐÍ£¬ÄÇôָÕëµÄÖ¸ÕëÒ²ÊÇÒ»ÖÖµØÖ·Êý¾Ý£¬±£´æµÄÒ²ÊǵØÖ·¡£ÒÔ´ËÀàÍÆ£¬Ö¸ÕëµÄÖ¸ÕëµÄÖ¸ÕëÄØ¡£¡£¡£¡£¡£¡£ÉÏÃæµÄ´úÂëÒѾÇå³þµØ˵Ã÷ÁËÕâÒ»µã¡£ËäÈ»pp¡¢ppp¡¢pppp×ÔÉíµÄÒâÒåÓÐËù²î±ð£¬µ«ÊÇËûÃDZ£´æµÄÊý¾ÝÈ´ºÜ¼òµ¥£¬Ò²¾ÍÊǶÑÕ»µÄµØÖ·¡£pppp->ppp->pp->p£¬´ó¼ÒÈç¹û¿´¶®ÁËÕâ¸ö¹Øϵ£¬¾Í²»»á¾õµÃÖ¸ÕëºÜ¸´ÔÓÁË¡£Èç¹û»¹ÊDz»ÉõÁËÁË£¬¿ÉÒÔ°ÑÖ¸ÕëÄÚÈݺÍÖ¸ÕëµØÖ··Ö±ð´òÓ¡³öÀ´£¬¾Í»á·¢ÏÖËûÃǵÄÇø±ðÁË¡£ÏÂÃæ¾ÍÊÇ´òÓ¡µÄ½á¹û£º
p = 0xa£¬ &p = 0x12ff20 pp = 0x12ff20£¬ &pp = 0x12ff1C ppp = 0x12ff1C£¬ &ppp = 0x12ff18 pppp = 0x12ff18£¬ &pppp = 0x12ff14 |
¡¡¡¡£¨4£©Ö¸ÕëºÍÒýÓÃ
¡¡¡¡ÒýÓÃÊÇC++ºÍÓïÑÔµÄÇø±ðÖ®Ò»¡£Æäʵ±¾ÖÊÉÏ˵Á½ÕßÊÇÒ»Öµġ£ÅóÓÑÃÇ¿ÉÒÔ¿´ÏÂÃæÁ½¶Î´úÂë¡£
¡¡¡¡a£©Ö¸ÕëºÍÖ¸ÕëµÄº¯Êý´úÂë
void add_point(int* q) void add_ref(int& q) |
¡¡¡¡b£©º¯ÊýµÄµ÷ÓôúÂë
56: int m = 10; 004012E8 mov dword ptr [ebp-4],0Ah 57: add_point(&m); 004012EF lea eax,[ebp-4] 004012F2 push eax 004012F3 call @ILT+45(process) (00401032) 004012F8 add esp,4 58: add_ref(m); 004012FB lea ecx,[ebp-4] 004012FE push ecx 004012FF call @ILT+50(add_ref) (00401037) 00401304 add esp,4 59: return 1; 00401307 mov eax,1 60: } |
¡¡¡¡·ÖÎöһϣ¬ÎÒÃÇ·¢ÏÖÆäʵº¯Êýadd_pointºÍº¯Êýadd_refʵÏֵŦÄÜ£¬¶¼ÊǶÔÊäÈëµÄÊý¾Ý½øÐÐ×ÔÔö´¦Àí¡£Ö»²»¹ý´¦ÀíµÄʱºò£¬Ò»¸öº¯ÊýµÄÈë²ÎÊÇÖ¸Õ룬һ¸öº¯ÊýµÄÈë²ÎÊÇÒýÓá£ÔÚº¯Êýµ÷Óõĵط½£¬´ó¼Ò¿ÉÒÔ·¢ÏÖÖ¸ÕëºÍÒýÓþÓÈ»ÊÇÒ»ÑùµÄ¡£Ê×ÏÈ¿´add_point£¬µÚÒ»¾ä»ñÈ¡mµÄµØÖ·¸´ÖƸøeax£¬µÚ¶þ¾äѹջ´¦Àí£¬µÚÈý¾äµ÷Óú¯Êýadd_point£¬µÚËľä³öÕ»»ØËÝ¡£Í¬Ñù¿´Ò»ÏÂadd_ref£¬µÚÒ»¾ä»ñÈ¡mµÄµØÖ·¸´ÖƸøecx£¬µÚ¶þ¾äecxѹջ´¦Àí£¬µÚÈý¾äµ÷Óú¯Êýadd_ref£¬µÚËľä¶ÑÕ»»ØËÝ´¦Àí¡£ÏàÐÅ¿´µ½ÕâÀ´ó¼Ò¾ÍÃ÷°×C++µÄÇ°±²ÃÇΪʲô¹ÄÀø´ó¼Ò¶à¶àʹÓÃÒýÓÃÁË¡£
¡¡¡¡£¨5£©Ö¸ÕëºÍ½á¹¹Ìå
¡¡¡¡ÎÒÃÇÔÚѧϰÊý¾Ý½ÚµãµÄʱºò£¬ÏàÐÅ´ó¼Ò¶¼Ñ§Ï°¹ýÕâÑùµÄÒ»¸öÊý¾Ý½á¹¹¶¨Ò壺
typedef struct _NODE { int data; struct _NODE* next; }NODE; |
¡¡¡¡µ±Ê±£¬ÎÒÃǶ¼²»Ã÷°×Õâ¸ö½á¹¹ÌåÊÇʲôÒâ˼£¿ÆäʵÕâ¸ö¶¨ÒåÍêÈ«Ð޸ijÉÕâÑù£º
typedef struct _NODE { int data; void* next; }NODE; |
¡¡¡¡ÕâÁ½¸öÊý¾Ý½á¹¹ÌåÆäʵÊÇÍêÈ«Ò»Öµġ£µÚÒ»¸öÊý¾Ý±£´æÊý¾Ý£¬µÚ¶þ¸öÊý¾ÝΪָÕ룬ÄÚÈÝΪijһ¸öÊý¾ÝÀàÐ͵ĵØÖ·¡£ÕâÖÖÈ·¶¨µÄµØÖ·ºÍvoid*ÀàÐ͵ĵØÖ·ÀàÐÍÊÇÒ»ÑùµÄ¡£Ö»²»¹ýÇ°ÃæÒ»ÖÖ¸ü¼ÓÖ±½Ó¡£ºóÃæÒ»ÖÖµØÖ·µÄ¹ÌÈ»·½±ã£¬µ«ÊÇʹÓõÄʱºòÿһ´Î¶¼ÐèÒª½øÐÐת»»£¬ºÜÊÇÂé·³¡£Èç¹û´ó¼Ò¸ÐÐËȤ£¬²»·ÁÊǽÓ×Å¿´ÏÂÃæÒ»µÀÌâÄ¿£º
typedef struct _NODE { struct _NODE* next; }NODE; |