Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
C/C++³ÌÐòÄÚ´æµÄ¸÷ÖÖ±äÁ¿´æ´¢ÇøÓòºÍ¸÷¸öÇøÓòÏê½â
 
×÷Õߣºjirryzhang
  3865  次浏览      29
 2020-7-2 
 
±à¼­ÍƼö:
ÎÄÕÂÖ÷ÒªÊ×ÏÈÒ»¸öÓÉc/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖÅ䣬ͨ³£¿ÉÒÔ°ÑÄÚ´æÀí½âΪ4¸ö·ÖÇø£ºÕ»¡¢¶Ñ¡¢È«¾Ö/¾²Ì¬´æ´¢ÇøºÍ³£Á¿´æ´¢Çø¡£ÏÂÎÄ·Ö±ð¼òµ¥µØ½éÉÜÁ˸÷×ÔµÄÌØµã¡£
ÎÄÕÂÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûAlice±à¼­ÍƼö¡£

CÓïÑÔÔÚÄÚ´æÖÐÒ»¹²·ÖΪÈçϼ¸¸öÇøÓò£¬·Ö±ðÊÇ£º

1. ÄÚ´æÕ»Çø£º ´æ·Å¾Ö²¿±äÁ¿Ãû£»

2. ÄÚ´æ¶ÑÇø£º ´æ·Ånew»òÕßmalloc³öÀ´µÄ¶ÔÏó£»

3. ³£ÊýÇø£º ´æ·Å¾Ö²¿±äÁ¿»òÕßÈ«¾Ö±äÁ¿µÄÖµ£»

4. ¾²Ì¬Çø£º ÓÃÓÚ´æ·ÅÈ«¾Ö±äÁ¿»òÕß¾²Ì¬±äÁ¿£»

5. ´úÂëÇø£º¶þ½øÖÆ´úÂë¡£

ÖªµÀÈçÉÏһЩÄÚ´æ·ÖÅä»úÖÆ£¬ÓÐÖúÓÚÎÒÃÇÀí½âÖ¸ÕëµÄ¸ÅÄî¡£

C/C++²»ÌṩÀ¬»ø»ØÊÕ»úÖÆ£¬Òò´ËÐèÒª¶Ô¶ÑÖеÄÊý¾Ý½øÐм°Ê±Ïú»Ù£¬·ÀÖ¹ÄÚ´æÐ¹Â©£¬Ê¹ÓÃfreeºÍdeleteÏú»ÙnewºÍmallocÉêÇëµÄ¶ÑÄڴ棬¶øÕ»ÄÚ´æÊǶ¯Ì¬ÊÍ·Å¡£

È«¾Ö±äÁ¿¡¢¾²Ì¬¾Ö²¿±äÁ¿±£´æÔÚÈ«¾ÖÊý¾ÝÇø£¬³õʼ»¯µÄºÍδ³õʼ»¯µÄ·Ö±ð±£´æÔÚÒ»Æð£»

ÆÕͨ¾Ö²¿±äÁ¿±£´æÔÚ¶ÑÕ»ÖУ»

È«¾Ö±äÁ¿ºÍ¾Ö²¿±äÁ¿ÔÚÄÚ´æÀïµÄÇø±ð£¿

Ò»¡¢Ô¤±¸ÖªÊ¶¡ª³ÌÐòµÄÄÚ´æ·ÖÅä

Ò»¸öÓÉc/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖΪÒÔϼ¸¸ö²¿·Ö

1¡¢Õ»Çø£¨stack£©¡ª ÓɱàÒëÆ÷×Ô¶¯·ÖÅäÊÍ·Å £¬´æ·Åº¯ÊýµÄ²ÎÊýÖµ£¬¾Ö²¿±äÁ¿µÄÖµµÈ¡£Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£

2¡¢¶ÑÇø£¨heap£© ¡ª Ò»°ãÓɳÌÐòÔ±·ÖÅäÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿ÉÄÜÓÉOS»ØÊÕ ¡£×¢ÒâËüÓëÊý¾Ý½á¹¹ÖеĶÑÊÇÁ½»ØÊ£¬·ÖÅ䷽ʽµ¹ÊÇÀàËÆÓÚÁ´±í£¬ºÇºÇ¡£3¡¢È«¾ÖÇø£¨¾²Ì¬Çø£©£¨static£©¡ª£¬È«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿µÄ´æ´¢ÊÇ·ÅÔÚÒ»¿éµÄ£¬³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿ÔÚÒ»¿éÇøÓò£¨RW£©£¬ δ³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍδ³õʼ»¯µÄ¾²Ì¬±äÁ¿ÔÚÏàÁÚµÄÁíÒ»¿éÇøÓò£¨ZI£©¡£ - ³ÌÐò½áÊøºóÓÐϵͳÊÍ·Å

4¡¢ÎÄ×Ö³£Á¿Çø ¡ª³£Á¿×Ö·û´®¾ÍÊÇ·ÅÔÚÕâÀïµÄ¡£ ³ÌÐò½áÊøºóÓÉϵͳÊÍ·Å£¨RO£©

5¡¢³ÌÐò´úÂëÇø¡ª´æ·Åº¯ÊýÌåµÄ¶þ½øÖÆ´úÂë¡££¨RO£©

×¢£º

1¡¢¶ÔÓÚRO¡¢RWºÍWIµÄ¸ÅÄî²»ÊÇÌØ±ðÇå³þµÄÅóÓÑ£¬¿ÉÒԲο¼ÎÒµÄÁíÍâһƪÎÄÕ£¬Àï±ßÓÐÏêϸµÄ½âÊÍ¡£

2¡¢°´ÎÒ¸öÈËÀí½âΪÁ˼õÉÙÄÚ´æË鯬µÄ²úÉú£¬±àÒëÆ÷¿ÉÄܻὫ¶ÑÇøÓÖ·ÖΪblockºÍheapÇø¡£blockÓÉһϵÁдóСÏàµÈµÄÄÚ´æ¿é×é³É¡£·ÖÅäÄÚ´æÊ±ÏÈÔÚblockÖзÖÅ䣬Èç¹ûblockÕ¼ÂúÔò´ÓheapÇøÖзÖÅ䡣ͬʱblockµÄ´óСºÍ¸öÊý¿ÉÒÔͨ¹ýÅäÖÃÎļþ½øÐÐÅäÖã¬Ê¹Ö®´ïµ½Ò»¸öºÏÊʵÄÊýÁ¿¡£

Àý£º

/* =========================== */
/* HEAP CONF */
/* =========================== */
/* General configuration for both linear heap and block based heap
* define this list to the size and count of individual fixed-size pools
*/
#define BLOCK_LIST \
/* size count */ \
BLOCK( 22, 80 ) \
BLOCK( 44, 64 ) \
BLOCK( 56, 16 )

¶þ¡¢Àý×Ó³ÌÐò

//main.cpp

int a = 0; È«¾Ö³õʼ»¯Çø

char *p1; È«¾Öδ³õʼ»¯Çø

main()

{

int b;// Õ»

char s[] = "abc"; //"abc"ÔÚ³£Á¿Çø£¬sÔÚÕ»ÉÏ¡£

char *p2; //Õ»

char *p3 = "123456"; //123456\0";ÔÚ³£Á¿Çø£¬p3ÔÚÕ»ÉÏ¡£

static int c =0£» //È«¾Ö£¨¾²Ì¬£©³õʼ»¯Çø

p1 = (char *)malloc(10);

p2 = (char *)malloc(20);

//·ÖÅäµÃÀ´µÃ10ºÍ20×Ö½ÚµÄÇøÓò¾ÍÔÚ¶ÑÇø¡£

strcpy(p1, "123456"); //123456\0·ÅÔÚ³£Á¿Çø£¬±àÒëÆ÷¿ÉÄܻὫËüÓëp3ËùÖ¸ÏòµÄ"123456"ÓÅ»¯³ÉÒ»¸öµØ·½¡£

}

Ò»¸öÓÉC/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖΪÒÔϼ¸¸ö²¿·Ö

1¡¢Õ»Çø£¨stack£©¡ª ³ÌÐòÔËÐÐʱÓɱàÒëÆ÷×Ô¶¯·ÖÅ䣬´æ·Åº¯ÊýµÄ²ÎÊýÖµ£¬¾Ö²¿±äÁ¿µÄÖµµÈ¡£

Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£

2¡¢¶ÑÇø£¨heap£© ¡ª ÔÚÄڴ濪±ÙÁíÒ»¿é´æ´¢ÇøÓò¡£

Ò»°ãÓɳÌÐòÔ±·ÖÅäÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿ÉÄÜÓÉOS»ØÊÕ ¡£

×¢ÒâËüÓëÊý¾Ý½á¹¹ÖеĶÑÊÇÁ½»ØÊ£¬·ÖÅ䷽ʽµ¹ÊÇÀàËÆÓÚÁ´±í¡£

3¡¢È«¾ÖÇø£¨¾²Ì¬Çø£©£¨static£©¡ª±àÒëÆ÷±àÒëʱ¼´·ÖÅäÄÚ´æ¡£

È«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿µÄ´æ´¢ÊÇ·ÅÔÚÒ»¿éµÄ£¬

³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿ÔÚÒ»¿éÇøÓò£¬

δ³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍδ³õʼ»¯µÄ¾²Ì¬±äÁ¿ÔÚÏàÁÚµÄÁíÒ»¿éÇøÓò¡£

- ³ÌÐò½áÊøºóÓÉϵͳÊÍ·Å

4¡¢ÎÄ×Ö³£Á¿Çø ¡ª³£Á¿×Ö·û´®¾ÍÊÇ·ÅÔÚÕâÀïµÄ¡£ ³ÌÐò½áÊøºóÓÉϵͳÊÍ·Å¡£

5¡¢³ÌÐò´úÂëÇø¡ª´æ·Åº¯ÊýÌåµÄ¶þ½øÖÆ´úÂë¡£×¢Ò⣺¾²Ì¬¾Ö²¿±äÁ¿ºÍ¾²Ì¬È«¾Ö±äÁ¿

ÊôÓÚ¾²Ì¬´æ´¢·½Ê½µÄÁ¿²»Ò»¶¨¾ÍÊǾ²Ì¬±äÁ¿¡£

ÀýÈ磺ȫ¾Ö±äÁ¿ËäÊôÓÚ¾²Ì¬´æ´¢·½Ê½£¬µ«²»Ò»¶¨ÊǾ²Ì¬±äÁ¿£¬

±ØÐëÓÉ static¼ÓÒÔ¶¨Òåºó²ÅÄܳÉΪ¾²Ì¬Íⲿ±äÁ¿£¬»ò³Æ¾²Ì¬È«¾Ö±äÁ¿¡£

°Ñ¾Ö²¿±äÁ¿¸Ä±äΪ¾²Ì¬±äÁ¿ºóÊǸıäÁËËüµÄ´æ´¢·½Ê½£¬¼´¸Ä±äÁËËüµÄÉú´æÆÚ¡£

°ÑÈ«¾Ö±äÁ¿¸Ä±äΪ¾²Ì¬±äÁ¿ºóÊǸıäÁËËüµÄ×÷ÓÃÓò£¬ÏÞÖÆÁËËüµÄʹÓ÷¶Î§¡£

Ш×Ó

Ò»¸ö¿ÉÖ´ÐгÌÐòÎļþÐèÒªÔÚ¼ÆËã»úÓ²¼þÉÏÔËÐÐÆðÀ´£¬ÆäʵÖʾÍÊǾ²Ì¬µÄÎļþ±»¼ÓÔØµ½ÄÚ´æÖеĹý³Ì£¬¿ÉÖ´ÐгÌÐòÎļþÖ»ÊÇÒ»¸ö³ÌÐòµÄÔØÌå¡£ÄÇôִÐÐÒ»¸öÓ¦Óúó£¬ËüÔÚÄÚ´æÖÐÊÇÒ»¸öÔõÑùµÄ½á¹¹ÄØ£¬Çë¹Ø×¢½ñÌìµÄ×ß½ø¿ÆÑ§¡ª¡ª¡¶C/C++ ³ÌÐòÄÚ´æ½á¹¹¡·¡£

¶¯&¾²

Ò»¸ö³ÌÐò±»¼ÓÔØµ½ÄÚ´æÖУ¬Õâ¿éÄÚ´æÊ×ÏȾʹæÔÚÁ½ÖÖÊôÐÔ£º¾²Ì¬·ÖÅäÄÚ´æºÍ¶¯Ì¬·ÖÅäÄÚ´æ¡£

¾²Ì¬·ÖÅäÄڴ棺ÊÇÔÚ³ÌÐò±àÒëºÍÁ´½Óʱ¾ÍÈ·¶¨ºÃµÄÄÚ´æ¡£

¶¯Ì¬·ÖÅäÄڴ棺ÊÇÔÚ³ÌÐò¼ÓÔØ¡¢µ÷Èë¡¢Ö´ÐеÄʱºò·ÖÅä/»ØÊÕµÄÄÚ´æ¡£

Text & Data & Bss

.text£ºÒ²³ÆÎª´úÂë¶Î(Code)£¬ÓÃÀ´´æ·Å³ÌÐòÖ´ÐдúÂ룬ͬʱҲ¿ÉÄÜ»á°üº¬Ò»Ð©³£Á¿(ÈçһЩ×Ö·û´®³£Á¿µÈ£©¡£¸Ã¶ÎÄÚ´æÎª¾²Ì¬·ÖÅ䣬ֻ¶Á(ijЩ¼Ü¹¹¿ÉÄÜÔÊÐíÐÞ¸Ä)¡£

Õâ¿éÄÚ´æÊǹ²ÏíµÄ,µ±Óжà¸öÏàͬ½ø³Ì(Process)´æÔÚʱ£¬¹²ÓÃͬһ¸ötext¶Î¡£

.data£ºÒ²Óеĵط½½ÐGVAR(global value)£¬ÓÃÀ´´æ·Å³ÌÐòÖÐÒѾ­³õʼ»¯µÄ·ÇÁãÈ«¾Ö±äÁ¿¡£¾²Ì¬·ÖÅä¡£

dataÓÖ¿É·ÖΪ¶Áд£¨RW£©ÇøÓòºÍÖ»¶Á£¨RO£©ÇøÓò¡£

-> RO¶Î±£´æ³£Á¿ËùÒÔÒ²±»³ÆÎª.constdata

-> RW¶ÎÔòÊÇÆÕͨ·Ç³£È«¾Ö±äÁ¿£¬¾²Ì¬±äÁ¿¾ÍÔÚÆäÖÐ

.bss£º´æ·Å³ÌÐòÖÐΪ³õʼ»¯µÄºÍÁãֵȫ¾Ö±äÁ¿¡£¾²Ì¬·ÖÅ䣬ÔÚ³ÌÐò¿ªÊ¼Ê±Í¨³£»á±»ÇåÁã¡£

textºÍdata¶Î¶¼ÔÚ¿ÉÖ´ÐÐÎļþÖУ¬ÓÉϵͳ´Ó¿ÉÖ´ÐÐÎļþÖмÓÔØ£»¶øbss¶Î²»ÔÚ¿ÉÖ´ÐÐÎļþÖУ¬ÓÉϵͳ³õʼ»¯¡£

ÕâÈý¶ÎÄÚ´æ¾Í×é³ÉÁËÎÒÃDZàдµÄ³ÌÐòµÄ±¾Ì壬µ«ÊÇÒ»¸ö³ÌÐòÔËÐÐÆðÀ´£¬»¹ÐèÒª¸ü¶àµÄÊý¾ÝºÍÊý¾Ý¼äµÄ½»»¥£¬·ñÔòÕâ¸ö³ÌÐò¾ÍÊÇËÀµÄ£¬ÎÞÓõġ£ËùÒÔÎÒÃÇ»¹ÐèҪΪ¸ü¶àµÄÊý¾ÝºÍÊý¾Ý½»»¥Ìṩһ¿éÄڴ桪¡ª¶ÑÕ»¡£

¶ÑÕ»£¨Heap& Stack£©

¶ÑºÍÕ»¶¼ÊǶ¯Ì¬·ÖÅäÄڴ棬Á½Õ߿ռä´óС¶¼ÊǿɱäµÄ¡£

Stack£ºÕ»£¬´æ·ÅAutomatic Variables£¬°´ÄÚ´æµØÖ·Óɸߵ½µÍ·½ÏòÉú³¤£¬Æä×î´ó´óСÓɱàÒëʱȷ¶¨£¬Ëٶȿ죬µ«×ÔÓÉÐԲ×î´ó¿Õ¼ä²»´ó¡£

Heap£º¶Ñ£¬×ÔÓÉÉêÇëµÄ¿Õ¼ä£¬°´ÄÚ´æµØÖ·Óɵ͵½¸ß·½ÏòÉú³¤£¬Æä´óСÓÉϵͳÄÚ´æ/ÐéÄâÄÚ´æÉÏÏÞ¾ö¶¨£¬ËٶȽÏÂý£¬µ«×ÔÓÉÐԴ󣬿ÉÓÿռä´ó¡£

ÿ¸öÏ̶߳¼»áÓÐ×Ô¼ºµÄÕ»£¬µ«ÊǶѿռäÊǹ²Óõġ£

Tips£º

char* p = new char[20];
// ÕâÐдúÂëÔÚHeapÖпª±ÙÁË20¸öchar³¤¶ÈµÄ¿Õ¼ä£¬Í¬Ê±ÔÚStackÉÏѹÈëÁËp£¬
// Ö¸Õë±äÁ¿p´æÔÚÓÚÕ»ÉÏ£¬ÆäֵΪ¸Õ¸ÕÔÚ¶ÑÉÏ¿ª±ÙµÄ¿Õ¼äµÄÊ×µØÖ·¡£

 

ͼ½â

ÔÚsw-atµÄ²©¿ÍÉϰÇÁËÒ»ÕÅͼ£¬ÕâÕÅͼÖÐËùʾÄÚ´æ¿Õ¼ä£¬µØÖ·ÓÉÏÂÍùÉÏÔö³¤£¬·Ö±ð±êʾÁË .text¡¢.data¡¢.bss¡¢stackºÍheapµÄÄÚ´æ·Ö²¿Çé¿ö¡£

ÎÒÃÇ¿ÉÒÔ¿´µ½£º

text¡¢data(gvar)¡¢bss ÔÚÄÚ´æÖеØÖ·½ÏµÍµÍµÄλÖã¨low level address£©£¬¶ø¶ÑÕ»ÔòÔÚÏà¶Ô½Ï¸ãµÄλÖá£

¶Ñ(Heap)Íù¸ßµØÖ··½ÏòÉú³¤£¬Õ»(Stack)ÍùµÍµØÖ··½ÏòÉú³¤¡£

ÔÚC\C++ÖУ¬Í¨³£¿ÉÒÔ°ÑÄÚ´æÀí½âΪ4¸ö·ÖÇø£ºÕ»¡¢¶Ñ¡¢È«¾Ö/¾²Ì¬´æ´¢ÇøºÍ³£Á¿´æ´¢Çø¡£ÏÂÃæÎÒÃÇ·Ö±ð¼òµ¥µØ½éÉÜһϸ÷×ÔµÄÌØµã¡£

1 Õ»

ͨ³£ÊÇÓÃÓÚÄÇЩÔÚ±àÒëÆÚ¼ä¾ÍÄÜÈ·¶¨´æ´¢´óСµÄ±äÁ¿µÄ´æ´¢Çø£¬ÓÃÓÚÔÚº¯Êý×÷ÓÃÓòÄÚ´´½¨£¬ÔÚÀ뿪×÷ÓÃÓòºó×Ô¶¯Ïú»ÙµÄ±äÁ¿µÄ´æ´¢Çø¡£Í¨³£ÊǾֲ¿±äÁ¿£¬º¯Êý²ÎÊýµÈµÄ´æ´¢Çø¡£ËûµÄ´æ´¢¿Õ¼äÊÇÁ¬ÐøµÄ£¬Á½¸ö½ôÃܰ¤×Ŷ¨ÒåµÄ¾Ö²¿±äÁ¿£¬ËûÃǵĴ洢¿Õ¼äÒ²Êǽô°¤×ŵġ£Õ»µÄ´óСÊÇÓÐÏ޵ģ¬Í¨³£Visual C++±àÒëÆ÷µÄĬÈÏÕ»µÄ´óСΪ1MB£¬ËùÒÔ²»Òª¶¨Òåint a[1000000]ÕâÑùµÄ³¬´óÊý×é¡£

2 ¶Ñ

ͨ³£ÊÇÓÃÓÚÄÇЩÔÚ±àÒëÆÚ¼ä²»ÄÜÈ·¶¨´æ´¢´óСµÄ±äÁ¿µÄ´æ´¢Çø£¬ËüµÄ´æ´¢¿Õ¼äÊDz»Á¬ÐøµÄ£¬Ò»°ãÓÉmalloc£¨»ònew£©º¯ÊýÀ´·ÖÅäÄÚ´æ¿é£¬²¢ÇÒÐèÒªÓÃfree£¨delete£©º¯ÊýÊÍ·ÅÄÚ´æ¡£Èç¹û³ÌÐòԱûÓÐÊͷŵô£¬ÄÇô¾Í»á³öÏÖ³£ËµµÄÄÚ´æÐ¹Â©ÎÊÌâ¡£ÐèҪעÒâµÄÊÇ£¬Á½¸ö½ô°¤×Ŷ¨ÒåµÄÖ¸Õë±äÁ¿£¬ËùÖ¸ÏòµÄmalloc³öÀ´µÄÁ½¿éÄÚ´æ²¢²»Ò»¶¨µÄÊǽô°¤×ŵģ¬ËùÒÔ»á²úÉúÄÚ´æË鯬¡£ÁíÍâÐèҪעÒâµÄÒ»µãÊÇ£¬¶ÑµÄ´óС¼¸ºõ²»ÊÜÏÞÖÆ£¬ÀíÂÛÉÏÿ¸ö³ÌÐò×î´ó¿É´ï4GB¡£

3 È«¾Ö/¾²Ì¬´æ´¢Çø

ºÍ¡°Õ»¡±Ò»Ñù£¬Í¨³£ÊÇÓÃÓÚÄÇЩÔÚ±àÒëÆÚ¼ä¾ÍÄÜÈ·¶¨´æ´¢´óСµÄ±äÁ¿µÄ´æ´¢Çø£¬µ«ËüÓÃÓÚµÄÊÇÔÚÕû¸ö³ÌÐòÔËÐÐÆÚ¼ä¶¼¿É¼ûµÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿¡£

4 ³£Á¿´æ´¢Çø

ºÍ¡°È«¾Ö/¾²Ì¬´æ´¢Çø¡±Ò»Ñù£¬Í¨³£ÊÇÓÃÓÚÄÇЩÔÚ±àÒëÆÚ¼ä¾ÍÄÜÈ·¶¨´æ´¢´óСµÄ³£Á¿µÄ´æ´¢Çø£¬²¢ÇÒÔÚ³ÌÐòÔËÐÐÆÚ¼ä£¬´æ´¢ÇøÄڵij£Á¿ÊÇÈ«¾Ö¿É¼ûµÄ¡£ÕâÊÇÒ»¿é±È½ÏÌØÊâµÄ´æ´¢È¥£¬ËûÃÇÀïÃæ´æ·ÅµÄÊdz£Á¿£¬²»ÔÊÐí±»Ð޸ġ£

5 ×ܽá

¸ù¾ÝÉÏÃæµÄÄÚÈÝ£¬·Ö±ð½«Õ»ºÍ¶Ñ¡¢È«¾Ö/¾²Ì¬´æ´¢ÇøºÍ³£Á¿´æ´¢Çø½øÐжԱȣ¬½á¹ûÈçÏ¡£

±í1 Õ»ºÍ¶ÑµÄ¶Ô±È

±í2 È«¾Ö/¾²Ì¬´æ´¢ÇøºÍ³£Á¿´æ´¢ÇøµÄ¶Ô±ÈÈ«¾Ö/¾²Ì¬´æ´¢Çø

l Õ»Çø£ºÖ÷ÒªÓÃÀ´´æ·Å¾Ö²¿±äÁ¿, ´«µÝ²ÎÊý, ´æ·Åº¯ÊýµÄ·µ»ØµØÖ·¡£.esp ʼÖÕÖ¸ÏòÕ»¶¥, Õ»ÖеÄÊý¾ÝÔ½¶à, espµÄֵԽС¡£

l ¶ÑÇø£ºÓÃÓÚ´æ·Å¶¯Ì¬·ÖÅäµÄ¶ÔÏó, µ±ÄãʹÓà mallocºÍnew µÈ½øÐзÖÅäʱ,ËùµÃµ½µÄ¿Õ¼ä¾ÍÔÚ¶ÑÖС£¶¯Ì¬·ÖÅäµÃµ½µÄÄÚ´æÇøÓò¸½´øÓзÖÅäÐÅÏ¢, ËùÒÔÄãÄܹ» freeºÍdeleteËüÃÇ¡£

l Êý¾ÝÇø£ºÈ«¾Ö£¬¾²Ì¬ºÍ³£Á¿ÊÇ·ÖÅäÔÚÊý¾ÝÇøÖеģ¬Êý¾ÝÇø°üÀ¨bss£¨Î´³õʼ»¯Êý¾ÝÇø£©ºÍ³õʼ»¯Êý¾ÝÇø¡£

×¢Ò⣺

1£© ¶ÑÏò¸ßÄÚ´æµØÖ·Éú³¤£»

2£© Õ»ÏòµÍÄÚ´æµØÖ·Éú³¤£»

3£© ¶ÑºÍÕ»ÏàÏò¶øÉú£¬¶ÑºÍÕ»Ö®¼äÓиöÁÙ½çµã£¬³ÆÎªstkbrk¡£

1¡¢Ò»Ìõ½ø³ÌÔÚÄÚ´æÖеÄÓ³Éä

¼ÙÉèÏÖÔÚÓÐÒ»¸ö³ÌÐò£¬ËüµÄº¯Êýµ÷ÓÃ˳ÐòÈçÏ£º

main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...)£¬¼´£ºÖ÷º¯Êýmainµ÷Óú¯Êýfunc_1; º¯Êýfunc_1µ÷Óú¯Êýfunc_2; º¯Êýfunc_2µ÷Óú¯Êýfunc_3¡£

µ±Ò»¸ö³ÌÐò±»²Ù×÷ϵͳµ÷ÈëÄÚ´æÔËÐÐ, Æä¶ÔÓ¦µÄ½ø³ÌÔÚÄÚ´æÖеÄÓ³ÉäÈçÏÂͼËùʾ£º

×¢Ò⣺

l Ëæ×ź¯Êýµ÷ÓòãÊýµÄÔö¼Ó£¬º¯ÊýÕ»Ö¡ÊÇÒ»¿é¿éµØÏòÄÚ´æµÍµØÖ··½ÏòÑÓÉìµÄ£»

l Ëæ×Žø³ÌÖк¯Êýµ÷ÓòãÊýµÄ¼õÉÙ£¨¼´¸÷º¯Êýµ÷Óõķµ»Ø£©£¬Õ»Ö¡»áÒ»¿é¿éµØ±»ÒÅÆú¶øÏòÄÚ´æµÄ¸ßÖ··½Ïò»ØËõ£»

l ¸÷º¯ÊýµÄÕ»Ö¡´óÐ¡Ëæ×ź¯ÊýµÄÐÔÖʵIJ»Í¬¶ø²»µÈ, Óɺ¯ÊýµÄ¾Ö²¿±äÁ¿µÄÊýÄ¿¾ö¶¨¡£

l δ³õʼ»¯Êý¾ÝÇø(BSS)£ºÓÃÓÚ´æ·Å³ÌÐòµÄ¾²Ì¬±äÁ¿£¬Õⲿ·ÖÄÚ´æ¶¼ÊDZ»³õʼ»¯ÎªÁãµÄ£»¶ø³õʼ»¯Êý¾ÝÇøÓÃÓÚ´æ·Å¿ÉÖ´ÐÐÎļþÀïµÄ³õʼ»¯Êý¾Ý¡£ÕâÁ½¸öÇøÍ³³ÆÎªÊý¾ÝÇø¡£

l Text(´úÂëÇø)£ºÊǸöÖ»¶ÁÇø£¬´æ·ÅÁ˳ÌÐòµÄ´úÂë¡£Èκγ¢ÊÔ¶Ô¸ÃÇøµÄд²Ù×÷»áµ¼Ö¶ÎÎ¥·¨³ö´í¡£´úÂëÇøÊDZ»¶à¸öÔËÐиÿÉÖ´ÐÐÎļþµÄ½ø³ÌËù¹²ÏíµÄ¡£

l ½ø³Ì¶ÔÄÚ´æµÄ¶¯Ì¬ÉêÇëÊÇ·¢ÉúÔÚHeap(¶Ñ)ÀïµÄ¡£Ëæ×Åϵͳ¶¯Ì¬·ÖÅ䏸½ø³ÌµÄÄÚ´æÊýÁ¿µÄÔö¼Ó£¬Heap(¶Ñ)ÓпÉÄÜÏò¸ßÖ·»òµÍÖ·ÑÓÉì, ÕâÒÀÀµÓÚ²»Í¬CPUµÄʵÏÖ£¬µ«Ò»°ãÀ´ËµÊÇÏòÄÚ´æµÄ¸ßµØÖ··½ÏòÔö³¤µÄ¡£

l ÔÚδ³õʼ»¯Êý¾ÝÇø£¨BSS£©»òÕßStack(Õ»Çø)µÄÔö³¤ºÄ¾¡ÁËϵͳ·ÖÅ䏸½ø³ÌµÄ×ÔÓÉÄÚ´æµÄÇé¿öÏ£¬½ø³Ì½«»á±»×èÈû, ÖØÐ±»²Ù×÷ϵͳÓøü´óµÄÄÚ´æÄ£¿éÀ´µ÷¶ÈÔËÐС£

l º¯ÊýµÄÕ»Ö¡£º°üº¬Á˺¯ÊýµÄ²ÎÊý(ÖÁÓÚ±»µ÷Óú¯ÊýµÄ²ÎÊýÊÇ·ÅÔÚµ÷Óú¯ÊýµÄÕ»Ö¡»¹ÊDZ»µ÷Óú¯ÊýÕ»Ö¡, ÔòÒÀÀµÓÚ²»Í¬ÏµÍ³µÄʵÏÖ)¡£º¯ÊýµÄÕ»Ö¡Öеľֲ¿±äÁ¿ÒÔ¼°»Ö¸´¸Ãº¯ÊýµÄÖ÷µ÷º¯ÊýµÄÕ»Ö¡(¼´Ç°Ò»¸öÕ»Ö¡)ËùÐèÒªµÄÊý¾Ý, °üº¬ÁËÖ÷µ÷º¯ÊýµÄÏÂÒ»ÌõÖ´ÐÐÖ¸ÁîµÄµØÖ·¡£

2¡¢ º¯ÊýµÄÕ»Ö¡

º¯Êýµ÷ÓÃʱËù½¨Á¢µÄÕ»Ö¡°üº¬ÏÂÃæµÄÐÅÏ¢£º

1£© º¯ÊýµÄ·µ»ØµØÖ·¡£·µ»ØµØÖ·ÊÇ´æ·ÅÔÚÖ÷µ÷º¯ÊýµÄÕ»Ö¡»¹ÊDZ»µ÷Óú¯ÊýµÄÕ»Ö¡Àȡ¾öÓÚ²»Í¬ÏµÍ³µÄʵÏÖ£»

2£© Ö÷µ÷º¯ÊýµÄÕ»Ö¡ÐÅÏ¢, ¼´Õ»¶¥ºÍÕ»µ×£»

3£© Ϊº¯ÊýµÄ¾Ö²¿±äÁ¿·ÖÅäµÄÕ»¿Õ¼ä£»

4£© Ϊ±»µ÷Óú¯ÊýµÄ²ÎÊý·ÖÅäµÄ¿Õ¼äÈ¡¾öÓÚ²»Í¬ÏµÍ³µÄʵÏÖ¡£

×¢Ò⣺

l BSSÇø£¨Î´³õʼ»¯Êý¾Ý¶Î£©£º²¢²»¸ø¸Ã¶ÎµÄÊý¾Ý·ÖÅä¿Õ¼ä£¬½ö½öÊǼǼÁËÊý¾ÝËùÐè¿Õ¼äµÄ´óС¡£

l DATA£¨³õʼ»¯µÄÊý¾Ý¶Î£©£ºÎªÊý¾Ý·ÖÅä¿Õ¼ä£¬Êý¾Ý±£´æÔÚÄ¿±êÎļþÖС£

»ù±¾ÉϳÌÐòÔ±ÔÚ¿ªÊ¼½Ó´¥Linux±à³Ìʱ¾Í´óµÖ¾Í¶¼Ìý¹ý´úÂë¶Î¡¢Êý¾Ý¶ÎµÈµÈ¸ÅÄËüÃÇÊǸ÷ÖÖÊý¾Ý´æ·ÅµÄλÖá£Í¨¹ýobjdump -hÃüÁî¿ÉÒԲ鿴һ¸ö.oÎļþ(ÒѱàÒë³É¶þ½øÖÆÎļþµ«Î´Á´½Ó)µÄ¸÷¸ö¶Î£º

1. ´úÂë¶Î(.txt)

.txt¶Î´æ·Å´úÂë(È纯Êý)Ó벿·ÖÕûÊý³£Á¿£¬.txt¶ÎµÄÊý¾Ý¿ÉÒÔ±»Ö´ÐÐ

2. Êý¾Ý¶Î(.data)

.dataÓÃÓÚ´æ·Å³õʼ»¯¹ýµÄÈ«¾Ö±äÁ¿¡£ÈôÈ«¾Ö±äÁ¿ÖµÎª0£¬ÎªÁËÓÅ»¯±àÒëÆ÷»á½«Ëü·ÅÔÚ.bss¶ÎÖÐ

3. bss¶Î(.bss)

.bss¶Î±»ÓÃÀ´´æ·ÅÄÇЩûÓгõʼ»¯»òÕß³õʼ»¯Îª0µÄÈ«¾Ö±äÁ¿¡£bss¶ÎÖ»Õ¼ÔËÐÐʱµÄÄÚ´æ¿Õ¼ä¶ø²»Õ¼Îļþ¿Õ¼ä¡£ÔÚ³ÌÐòÔËÐеÄÕû¸öÖÜÆÚÄÚ£¬.bss¶ÎµÄÊý¾ÝÒ»Ö±´æÔÚ

.dataºÍ.bss¶ÎµÄÇø±ð¿ÉÒÔͨ¹ýÏÂÃæ³ÌÐòÑéÖ¤£º

#include <stdio.h>

char global_arr[1024 * 1024]; //´æ·ÅÔÚ.bss¶Î
int main(void)
{
return 0;

±àÒëºó²é¿´´óС£º

ÏÔÈ»£¬global_arrÊý×éÕ¼¾ÝµÄ1M¿Õ¼ä²¢Ã»ÓÐÕ¼¾ÝÎļþ¿Õ¼ä¡£½«global_arrÊý×é¸Ä·ÅÔÚ.data¶ÎÖУº

char global_arr[1024 * 1024] = {4}; //´æ·ÅÔÚ.data¶Î

±àÒëºó²é¿´´óС£º

Îļþ±ä³ÉÁË1M¶à£¬ÏÔÈ».data¶ÎÉϵÄÊý¾ÝÊÇÕ¼¾ÝÎļþ¿Õ¼äµÄ¡£

4. ³£Á¿Êý¾Ý¶Î(.rodata)

ro±íread only£¬ÓÃÓÚ´æ·Å²»¿É±äÐ޸ĵij£Á¿Êý¾Ý£¬Ò»µ©³ÌÐòÖÐ¶ÔÆäÐ޸Ľ«»á³öÏֶδíÎó£º

(1) ³ÌÐòÖеij£Á¿²»Ò»¶¨¾Í·ÅÔÚrodataÖУ¬ÓеÄÁ¢¼´ÊýºÍÖ¸Áî±àÂë·ÅÔÚ.textÖÐ

(2) ¶ÔÓÚ×Ö·û´®³£Á¿£¬Èô³ÌÐòÖдæÔÚÖØ¸´µÄ×Ö·û´®£¬±àÒëÆ÷»á±£Ö¤Ö»´æÔÚÒ»¸ö

(3) rodataÊÇÔÚ¶à¸ö½ø³Ì¼ä¹²ÏíµÄ

(4) ÓеÄǶÈëʽϵͳ£¬rodata·ÅÔÚROM(»òÕßNOR FLASH)ÖУ¬ÔËÐÐʱֱ½Ó¶ÁÈ¡ÎÞÐè¼ÓÔØÖÁRAM(¹þ·ðºÍ·ëŵÒÀÂü£¬´ÓSTM32µÄconstÈ«¾Ö±äÁ¿ËµÆðÓÐËù¼Ç¼)

ÏëÒª½«Êý¾Ý·ÅÔÚ.rodataÖ»ÐèÒª¼ÓÉÏconstÊôÐÔÐÞÊμ´¿É¡£

5. Õ»

Õ»ÊÇÓÃÓÚ´æ·ÅÁÙʱ±äÁ¿ºÍº¯Êýµ÷Óõġ£Õ»Ò²ÊÇÒ»ÖÖÏȽøºó³öµÄÊý¾Ý½á¹¹£¬º¯ÊýµÄµÝ¹éµ÷ÓÃÕýµÃÒæÓÚÕ»µÄ´æÔÚ¡£Ðè×¢Òâ´æÔÚÕ»µÄÊý¾ÝÖ»ÔÚµ±Ç°º¯ÊýºÍ×Óº¯ÊýÖÐÓÐЧ£¬Ò»µ©º¯Êý·µ»ØÊý¾Ý½«»á±»×Ô¶¯ÊÍ·Å¡£

6. ¶Ñ

¶ÑµÄʹÓÃÖÜÆÚÓÐʹÓÃÕß¿ØÖÆ£¬³ÌÐòÖеÄÄÚ´æÐ¹Â©¶àÒò³ÌÐòÔ±¶Ô¶ÑµÄ¹ÜÀí²»µ±ÒýÆð£¬Ðè½÷É÷¡£

7. .comment¶Î

ÔÚÉÏͼÖл¹¿´µ½.comment¶Î£¬Ëü´æ·ÅµÄÊDZàÒëÆ÷°æ±¾µÈÐÅÏ¢¡£³ýÁË.comment£¬»¹ÓÐ.note¡¢.hashµÈÆäËû¶Î£¬Á˽⼴¿É¡£

   
3865 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
.NET Core 3.0 Õýʽ¹«²¼£ºÐÂÌØÐÔÏêϸ½â¶Á
.NET Core²¿ÊðÖÐÄã²»Á˽âµÄ¿ò¼ÜÒÀÀµÓë¶ÀÁ¢²¿Êð
C# eventḬ̈߳²È«
¼òÎö .NET Core ¹¹³ÉÌåϵ
C#¼¼ÊõÂþ̸֮À¬»ø»ØÊÕ»úÖÆ(GC)
×îпγÌ
.NetÓ¦Óÿª·¢
C#¸ß¼¶¿ª·¢¼¼Êõ
.NET ¼Ü¹¹Éè¼ÆÓëµ÷ÊÔÓÅ»¯
ASP.NET Core Web ¿ª·¢
ASP.Net MVC¿ò¼ÜÔ­ÀíÓëÓ¦Óÿª·¢
³É¹¦°¸Àý
º½Ìì¿Æ¹¤¼¯ÍÅ×Ó¹«Ë¾ DotNetÆóÒµ¼¶Ó¦ÓÃÉè¼ÆÓ뿪·¢
ÈÕÕÕ¸Û¼¯ .NET Framewor
Éñ»ªÐÅ .NETµ¥Ôª²âÊÔ
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ