1581, 66/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   wolverine
   [ÀÚÀÛ] C °­ÁÂ [3] - Variable & Memory

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=2035 [º¹»ç]


À̹ø Àå¿¡¼­´Â º¯¼ö¿Í ¸Þ¸ð¸®ÀÇ °ü°è¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

º¯¼ö´Â
- local variable(Áö¿ªº¯¼ö)
- global variable(Àü¿ªº¯¼ö)
·Î ³ª´µ¾î Áý´Ï´Ù.

local variableÀº function(ÇÔ¼ö) ³»¿¡¼­ ¼±¾ðµÇ´Â º¯¼öÀÔ´Ï´Ù.
global variableÀº ÇÔ¼ö ¹Û¿¡¼­ ¼±¾ðµÇ´Â º¯¼ö ÀÔ´Ï´Ù.

int g1;
short g2;

void function1(void)
{
    int a;
    short b[10];
    char c[20];

    ....

}

À§ÀÇ ¿¹Á¦¿¡¼­ º¯¼ö a,b,c´Â ¸ðµÎ local variableÀ̸ç,
¸ðµç local variableÀº stack ¿µ¿ª¿¡ ÇÒ´çÀÌ µË´Ï´Ù.

º¯¼ö g1,g2´Â ¸ðµÎ global variableÀ̸ç,
¸ðµç ÃʱâÈ­ µÇÁö ¾ÊÀº global variableÀº ±âº»ÀûÀ¸·Î .bss ¿µ¿ª¿¡ ÇÒ´çÀÌ µË´Ï´Ù.

¸¸¾à float pi = 3.141592; ¿Í °°ÀÌ piÀÇ ¼±¾ð°ú µ¿½Ã¿¡ ÃʱâÈ­°¡ µÇ¾ú´Ù¸é,
ÀÌ º¯¼ö´Â .data ¿µ¿ª¿¡ ÇÒ´çÀÌ µË´Ï´Ù.

2Àå¿¡¼­ linker command fileÀ» ÅëÇؼ­ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ memoryÀÇ ±¸Á¶¿Í
°¢°¢ÀÇ ¿µ¿ªº°·Î ½ÃÀÛ¹øÁö/Å©±â¸¦ ¼³Á¤ÇØÁØ´Ù°í ¹è¿ü½À´Ï´Ù.

¸¸¾à local º¯¼ö¸¦ ¾ÆÁÖ Å« »çÀÌÁî·Î ¼±¾ðÇÏ¸é ¾î¶»°Ô µÉ±î¿ä?

void function(void)
{
     int b[100000];
     ....
}

ÀÌ·¸°Ô ¼±¾ðÀ» Çϸé compiler¿¡ Á¾·ù¿¡ µû¶ó¼­ warningÀ» ³»ÁÖ´Â °æ¿ìµµ ÀÖ°í,
±×·¸Áö ¾ÊÀº °æ¿ìµµ ÀÖ½À´Ï´Ù.
ÇÏÁö¸¸, stackÀÇ Å©±â¸¦ ³Ñ¾î¼­´Â local º¯¼ö¸¦ À§¿Í °°ÀÌ ¼±¾ðÇÏ°í,

for(i=0; i<100000; i++) b[i] = i;

¿Í °°Àº code°¡ ÇÔ¼ö ³»¿¡¼­ ¼öÇàÀÌ µÈ´Ù°í °¡Á¤Çϸé, ¹«½¼ ÀÏÀÌ ÀϾ±î¿ä?

»ç½Ç processor°¡ program¸¦ Á÷Á¢ ½ÇÇàÇÏ´Â Áß¿¡´Â Áö±Ý ³»°¡ access(read/write)ÇÏ´Â ¿µ¿ªÀÌ
stackÀÎÁö, ¾Æ´Ï¸é ´Ù¸¥ ¿µ¿ªÀÎÁö Àß ¾ËÁö ¸øÇÏ´Â °æ¿ì°¡ ´ëºÎºÐÀÔ´Ï´Ù.
À§¿Í °°Àº °æ¿ì´Â ½ÇÁ¦·Î, b[i]ÀÇ ¸ðµç ¹øÁö¿¡ i°ªÀÌ ÀúÀåµÇ°í,
¸¸¾à stackÀ» ³Ñ¾î¼­´Â ¿µ¿ªÀÌ¶óµµ i°ªÀÌ ÀúÀåµÇ°Ô µË´Ï´Ù.

stack°ú ÀÎÁ¢ÇÑ memory¿¡ ´Ù¸¥ ¿µ¿ªÀÌ À§Ä¡ÇÏ°í ÀÖ´Ù¸é,
±× ¿µ¿ª¿¡ ÇÒ´ç µÇ¾î ÀÖ´Â º¯¼ö³ª Äڵ带 i °ªÀ¸·Î ¹Ù²Ù°Ô µÇ°í,
°á°úÀûÀ¸·Î programÀÇ Á¤»óÀûÀÎ ¼öÇàÀ» ¸øÇÏ°Ô ¸¸µé¾î ¹ö¸³´Ï´Ù.

ÀÌ¿Í °°Àº °æ¿ì¸¦ stack overflow¶ó°í ÇÕ´Ï´Ù.

µû¶ó¼­, Å« Å©±âÀÇ ¹è¿­(array)´Â °¡´ÉÇÑ local º¯¼ö¿¡ ÇÒ´çÇÏÁö ¾Êµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.

¹Ý¸é¿¡ global variableÀº ÇÁ·Î±×·¥ Á¾·á½Ã±îÁö memory¿¡ ÇÒ´çÀÌ µÇ¾î¾ß ÇÕ´Ï´Ù.
Å©±â°¡ Å« global variableµéÀÌ ÇÁ·Î±×·¥ Áß°£ Áß°£¿¡¸¸ »ç¿ëÀÌ µÇ´Â °æ¿ì´Â
memory ÀÔÀå¿¡¼­´Â ³¶ºñ°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.

stack¿¡ ÇÒ´çµÈ local variableÀº ÇÔ¼öÀÇ ½ÃÀÛ~³¡, Áï ÇÔ¼ö°¡ ½ÇÇàµÇ´Â µ¿¾È¿¡¸¸
stack¿¡ ÀÚ¸®Àâ±â ¶§¹®¿¡, ¸Þ¸ð¸® »çÀÌÁî ÀÔÀå¿¡¼­´Â ÈξÀ °æÀçÀûÀÔ´Ï´Ù.

Áï, function1 ÀÇ int a[100] µµ stack ¿¡ ÇÒ´çÀÌ µÇ°í,
function2ÀÇ int b[100]µµ stack¿¡ ÇÒ´çÀÌ µË´Ï´Ù.
ÁÖ¾îÁø stack °ø°£À» ³Ñ¾î¼­Áö¸¸ ¾Ê´Â´Ù¸é
ÇÔ¼ö ³»¿¡¼­ ±×¶§ ±×¶§ ÇÊ¿äÇÑ º¯¼öµéÀº µ¿ÀÏÇÑ stackÀ̶ó´Â °ø°£À»
°è¼ÓÀûÀ¸·Î È°¿ëÇÏ°Ô µË´Ï´Ù

ÇÏÁö¸¸, function1¿¡¼­¸¸ ÀÌ¿ëµÇ´Â int a[100]°ú
function2¿¡¼­¸¸ ÀÌ¿ëµÇ´Â int b[100]À»
global variable·Î ¼±¾ðÇÏ°Ô µÇ¸é
ÇÁ·Î±×·¥ÀÇ ³¡ÀÌ ³¯¶§±îÁö Ç×»ó ¸Þ¸ð¸®¿¡ a[100]°ú b[100]ÀÌ
ÀÚ¸®Àâ°í ÀÖ°Ô µÇ¾î ¸¹Àº ³¶ºñ°¡ µË´Ï´Ù.

NOTE:
ÀÌ·¯ÇÑ °ÍµéÀ» ÇØ°áÇϱâ À§Çؼ­ dynamic memory allocation À̶ó´Â °ÍÀÌ ÀÖ½À´Ï´Ù.
ÃßÈÄ °­Á¿¡¼­ ¼³¸íÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.

À̹ø Àå¿¡¼­´Â Àü¿ª º¯¼ö/Áö¿ª º¯¼ö¿Í ¸Þ¸ð¸® ÇÒ´ç¿¡ ´ëÇؼ­ ¾Ë¾Æº¸¾Ò½À´Ï´Ù.
½ÇÁ¦·Î debugger¸¦ ÅëÇؼ­,
°¢°¢ÀÇ º¯¼öÀÇ address¸¦ Çѹø »ìÆì º¸½Ã¸é,
À§¿Í °°Àº ±ÔÄ¢¿¡ ÀÇÇؼ­ address°¡ ÇÒ´çÀÌ µÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù.

Best Regards,
Wolverine


























  Hit : 6302     Date : 2012/07/05 11:56



    
pkw5240 ļ ¤¾¤¾
»ç½Ç processor°¡ program¸¦ Á÷Á¢ ½ÇÇàÇÏ´Â Áß¿¡´Â Áö±Ý ³»°¡ access(read/write)ÇÏ´Â ¿µ¿ªÀÌ
stackÀÎÁö, ¾Æ´Ï¸é ´Ù¸¥ ¿µ¿ªÀÎÁö Àß ¾ËÁö ¸øÇÏ´Â °æ¿ì°¡ ´ëºÎºÐÀÔ´Ï´Ù.
À§¿Í °°Àº °æ¿ì´Â ½ÇÁ¦·Î, b[i]ÀÇ ¸ðµç ¹øÁö¿¡ i°ªÀÌ ÀúÀåµÇ°í,
¸¸¾à stackÀ» ³Ñ¾î¼­´Â ¿µ¿ªÀÌ¶óµµ i°ªÀÌ ÀúÀåµÇ°Ô µË´Ï´Ù

À̸» Á¤¸» ÀÌÇØ°¡ Àß°¡°ÔÇØÁֳ׿ä!
´öºÐ¿¡ ½ºÅÿÀ¹öÇ÷ο쿡´ëÇØ È®½ÇÈ÷ ¾Ë¾Ò¾î¿ä!! °¨»çÇØ¿ä
2012/07/11  
wolverine ½ÇÁ¦ Çö¾÷¿¡¼­µµ °³¹ß½Ã¿¡ °¡²û Àú·± ¹®Á¦·Î °í»ýÀ» ÇÒ °æ¿ìµµ ÀÖ½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
2012/07/11  
281   [ÀÚÀÛ] ¹ÙÀÌ·¯½º/Æ®·ÎÀ̸ñ¸¶ ÇÁ·Î¼¼½º°¡ ÀÛ¾÷ °ü¸®ÀÚ È¤Àº tskill, taskkill ¿¡ ÀÇÇØ ²¨ÁöÁö ¾Ê´Â °æ¿ì[1]     TeamDeveloper
04/17 6331
280   ÀÌÇØÇÏ¸é ½¬¿î Æ÷ÀÎÅÍ °³³ä.     karineko
04/29 6322
279   [ÀÚÀÛ]M's HTML Lecture3[1]     Myers
04/11 6310
278   [ÀÚÀÛ]IPÁÖ¼Ò¿¡ ´ëÇØ[2]     Myers
12/27 6308
  [ÀÚÀÛ] C °­ÁÂ [3] - Variable & Memory[2]     wolverine
07/05 6301
276   ¹®ÀÚÀÇ Á¾·ù     smartbloger
06/16 6295
275   Programer Begin -Á¦ 2Æí (ex)- by ciciru/ÀÌ¿ë±Ô[5]     ciciru
09/21 6294
274   ·¹º§À» ¿Ã·Á¼­ ¼¼¹Ì³ª µîµî¿¡ Âü¿©ÇÏ°í ½ÍÀºµ¥¿ä[3]     babuemf
07/30 6293
273   ÁÖ¼Ò¤»(³×Æ®¿öÅ©)[5]     sdc04303
05/13 6293
272   [re] : ÇØÄ𠱤ÁÖ¿¡¼­ °°ÀÌ °ÏºÎÇϽǺР¼±»ý´Ô & ½º½Â ±¸ÇÕ´Ï´Ù.     ne4760
04/15 6289
271   Exploit?[2]     ÇØÄ¿ Hades
08/03 6287
270   Çö¿ª ±³À°ÄÁ¼³ÅÏÆ®°¡ Á¤º¸º¸¾ÈÀü¹®°¡ Áö¸ÁÇÏ´Â Çлýµé¿¡ ´ëÇØ Áø·Î¿¡´ëÇØ Ãæ°íÇÒ Á¡[6]     nejinn
12/24 6284
269   [ÀÚÀÛ] Indroduction of Python Django[2]     sorucA
02/03 6282
268   ÇØÅ·ÇÑ ¾ÆÀÌÆù, ÀÛµ¿ ¾ÈµÉ¼öµµ ÀÖ´Ù     koresong
09/29 6276
267   ¾È³çÇϼ¼¿ä?     wkdqkf2
03/18 6272
266   [ÀÚÀÛ] Ãʺ¸ÀÚ¸¦ À§ÇÑ C ¾ð¾î °­ÁÂ[8]     kevin0960
08/22 6262
265   [ÀÚÀÛ]M's HTML Lecture 2[1]     Myers
03/31 6261
264   [Æۿ±Û] ¹öÆÛ¿À¹öÇÃ·Î¿ì ±âÃÊ - ±è¼º¿ì´Ô ¹ßÇ¥ÀÚ·á ÀÔ´Ï´Ù[5]     ÇѽÂÀç
10/01 6259
263   vmware playerÀ» ÀÌ¿ëÇÏ¿© X-windows ȯ°æ »ç¿ëÇϱâ.[4]     sdm702
10/07 6251
262   ÁøÁöÇÕ´Ï´Ù.     rabbitlycat
05/08 6250
[1]..[61][62][63][64][65] 66 [67][68][69][70]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org