heap & stack

stack

½ºÅÃÀ̶õ ¿©·¯ °³ÀÇ µ¥ÀÌŸ Ç׸ñµéÀÌ ÀÏÁ¤ÇÑ ¼ø¼­·Î ³ª¿­µÈ ÀÚ·á ±¸Á¶·Î ÇÑÂÊ ³¡¿¡¼­¸¸ »õ·Î¿î Ç׸ñÀ» »ðÀÔÇϰųª ±âÁ¸ Ç׸ñÀ» »èÁ¦ÇÒ ¼ö ÀÖµµ·Ï °í¾ÈµÈ °ÍÀÌ´Ù. ½ºÅÃÀº µ¿ÀüÀ» ³Ö°í »¬ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Â µ¿Àü ÄÉÀ̽º¿Í °°Àº ÀÛµ¿ ¿ø¸®¸¦ °¡Áö°í ÀÖ´Ù. »ðÀÔµÈ µ¿ÀüµéÀº ÄÉÀ̽º ³»ºÎ¿¡ ÀÏÁ¤ÇÑ ¼ø¼­·Î ÀúÀåµÈ´Ù. ¸ÕÀú »ðÀÔµÈ µ¿ÀüÀº ÄÉÀ̽ºÀÇ °¡Àå ¾Æ·¡ÂÊ¿¡ À§Ä¡ÇÏ°í °¡Àå ÃÖ±Ù¿¡ »ðÀԵȵ¿ÀüÀº ÀÔ±¸¿¡ ³õÀδÙ. ½ºÅÿ¡ ÀúÀåµÈ µ¥ÀÌŸ Ç׸ñµé Áß¿¡ ¸ÕÀú »ðÀÔµÈ °ÍÀº ³ªÁß¿¡ »èÁ¦µÇ°í, ³ªÁß¿¡ »ðÀÔµÈ °ÍÀÌ ¸ÕÀú »èÁ¦µÈ´Ù. ±×·¡¼­ ½ºÅÃÀ» ÈÄÀÔ ¼±Ãâ ¸®½ºÆ®Last- In-First-Out List)¶ó°í ºÎ¸¥´Ù. ¼±ÀÔ ¼±Ãâ¹ýÀ» »ç¿ëÇϴ ť¿Í´Â »ó¹ÝµÈ ¼ºÁúÀ» °¡Áø´Ù.

 

½ºÅÃÀº ±âÀú(base)·ÎºÎÅÍ µ¥ÀÌŸ Ç׸ñµéÀ» Â÷·Ê·Î ½×¾Æ¿Ã¸° ¸ð¾çÀ» °¡Áø´Ù.

»ðÀÔ°ú »èÁ¦´Â ÇöÀç ÀúÀåµÈ ÃÖ»óÀ§ Ç׸ñÀÌ À§Ä¡ÇÑ top ¿¡¼­¸¸ ÀϾ´Ù.

top À§Ä¡´Â "½ºÅà Æ÷ÀÎÅÍ"¶ó´Â Áö½ÃÀÚ°¡ °¡¸®Å²´Ù.

½ºÅà Æ÷ÀÎÅÍ´Â ½ºÅà ±âÀú¿¡¼­ ½ÃÀÛÇÏ¿© Ç׸ñÀÌ »ðÀԵǸé Çϳª Áõ°¡Çϰí,

»èÁ¦µÇ¸é Çϳª °¨¼ÒÇÑ´Ù. ½ºÅÿ¡´Â ÇѰ谡 À־ ±× ÇѰ踦 ÃʰúÇϵµ·Ï »ðÀÔÇÒ ¼ö ¾ø´Ù.

 

heap

ÇÁ·Î±×·¥ÀÇ ½ÇÇà µµÁß¿¡ ¿ä±¸µÇ´Â ±â¾ï Àå¼Ò¸¦ ÇÒ´çÇϱâ À§ÇÏ¿© ¿î¿µ üÁ¦¿¡ ¿¹¾àµÇ¾î ÀÖ´Â ±â¾ï Àå¼Ò ¿µ¿ª. ÇÁ·Î±×·¥¿¡¼­ ½ÇÇà µµÁß¿¡ ÀڷḦ ÀúÀåÇϱâ À§ÇÏ¿© ±â¾ï Àå¼Ò¸¦ ¿äûÇÏ°Ô µÇ¸é ¿î¿µ üÁ¦¿¡¼­´Â Èü¿¡ Á¸ÀçÇÏ´Â ±â¾ï Àå¼Ò¸¦ ÇÁ·Î±×·¥¿¡ ÇÒ´çÇÑ´Ù. ±×¸®°í ÇÁ·Î±×·¥¿¡¼­ ±â¾ï ÀåÄ¡¸¦ ´õ ÀÌ»ó ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ¾Õ¿¡¼­ ÇÒ´ç ¹Þ¾Ò´ø ±â¾ï Àå¼Ò¸¦ ¿î¿µÃ¼Á¦¿¡ ¹Ý³³ÇÏ°Ô µÇ´Âµ¥, À̶§ ¿î¿µÃ¼Á¦¿¡¼­´Â ¹Ý³³µÈ ±â¾ï Àå¼Ò¸¦ ´Ù½Ã Èü¿¡ ¿¬°áÇÏ°Ô µÈ´Ù. Èü¿¡ ´ëÇÑ ±â¾ï Àå¼Ò´Â Æ÷ÀÎÅ͸¦ ÅëÇØ µ¿ÀûÀ¸·Î ÇÒ´çµÇ°Å³ª ¹ÝȯÀÌ µÇ´Âµ¥ ¿¬°á ¸®½ºÆ®, Æ®¸®, ±×·¡ÇÁ µî°ú °°ÀÌ µ¿ÀûÀΠƯ¼ºÀ» °¡Áö°í ÀÖ´Â ÀڷᱸÁ¶¿¡¼­ ³Î¸® »ç¿ëµÈ´Ù.

ÈüÀº ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§±îÁö ¾Ë ¼ö ¾ø´Â °¡º¯ÀûÀÎ ¾ç¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇØ ÇÁ·Î±×·¥ÀÇ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¹Ì¸® ¿¹¾àµÇ¾î ÀÖ´Â ¸ÞÀÎ ¸Þ¸ð¸®ÀÇ ¿µ¿ªÀÌ´Ù. ¿¹¸¦µé¸é ÇϳªÀÇ ÇÁ·Î±×·¥Àº 󸮸¦ À§ÇØ ÇѸí ÀÌ»óÀÇ »ç¿ëÀڷκÎÅÍ ¼­·Î ´Ù¸¥ ¾çÀÇ ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖÀ¸¸ç Áï½Ã ¸ðµç ÀԷµ¥ÀÌÅÍ¿¡ ´ëÇØ 󸮸¦ ½ÃÀÛÇÑ´Ù. ¿î¿µÃ¼°è·ÎºÎÅÍ ÀÌ¹Ì È®º¸µÈ ÀÏÁ¤·®ÀÇ Èü ÀúÀå°ø°£À» °¡Áö°í ÀÖÀ¸¸é ÀúÀå°ú °ü·ÃµÈ 󸮸¦ Á» ´õ ½±°Ô ÇÒ ¼ö ÀÖÀ¸¸ç ÀϹÝÀûÀ¸·Î ÇÊ¿äÇÒ ¶§¸¶´Ù ¿î¿µÃ¼°èÀÇ ¿î¿µÃ¼°è¿¡°Ô ¸Å¹ø ÀúÀå°ø°£À» ¿äûÇÏ´Â °Íº¸´Ù ºü¸£°Ô µÈ´Ù. ÇÁ·Î¼¼½º´Â ÇÊ¿äÇÒ ¶§ heap ºí·ÏÀ» ¿ä±¸ÇÏ°í ´õ ÀÌ»ó ÇÊ¿ä ¾øÀ» ¶§ ¹ÝȯÇϸç À̵û±Ý¾¿ ÀÚÅõ¸® ¸ðÀ¸±â¸¦ ¼öÇàÇÔÀ¸·Î½á Àڽſ¡°Ô ÇÒ´çµÈ heapÀ» °ü¸®Çϱ⵵ ÇÑ´Ù. ¿©±â¼­ ÀÚÅõ¸® ¸ðÀ¸±â¶õ ´õ ÀÌ»ó »ç¿ëµÇÁö ¾Ê´Â ºí·ÏµéÀ» »ç¿ë °¡´ÉÇÑ »óÅ·Π¸¸µé°í ¶ÇÇÑ heap ³»ÀÇ »ç¿ë °¡´ÉÇÑ °ø°£À» ÀÎÁöÇÔÀ¸·Î½á »ç¿ëµÇÁö ¾ÊÀº ÀÛÀº Á¶°¢µéÀÌ ³¶ºñµÇÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù.

ÈüÀ̶õ ÄÄÇ»ÅÍÀÇ ±â¾ï Àå¼Ò¿¡¼­ ±× ÀϺκÐÀÌ ÇÁ·Î±×·¥µé¿¡ ÇÒ´çµÇ¾ú´Ù°¡ ȸ¼öµÇ´Â ÀÛ¿ëÀÌ µÇÇ®ÀÌ µÇ´Â ¿µ¿ªÀÌ´Ù. ½ºÅÿµ¿ªÀº ¾ö°ÝÇÏ°Ô ÈÄÀÔ¼±Ãâ(LIFO)¹æ½ÄÀ¸·Î ¿î¿µµÇ´Âµ¥ ºñÇØ ÈüÀº ÇÁ·Î±×·¥µéÀÌ ¿ä±¸ÇÏ´Â ºí·ÏÀÇ Å©±â³ª ¿ä±¸/Ƚ¼ö ¼ø¼­°¡ ÀÏÁ¤ÇÑ ±ÔÄ¢ÀÌ ¾ø´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ´ë°³ ÈüÀÇ ±â¾ïÀå¼Ò´Â Æ÷ÀÎÅͺ¯¼ö¸¦ ÅëÇØ µ¿ÀûÀ¸·Î ÇÒ´ç¹Þ°í µ¹·ÁÁØ´Ù. ÀÌ´Â ¿¬°á ¸ñ·ÏÀ̳ª ³ª¹«, ±×·¡ÇÁ µîÀÇ µ¿ÀûÀÎ ÀÚ·á ±¸Á¶¸¦ ¸¸µå´Âµ¥ ²À ÇÊ¿äÇÑ °ÍÀÌ´Ù.

±×·³ Èü ¸Þ¸ð¸®¸¦ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÚÀ¯¸Þ¸ð¸®¶ó°í ÇÒ ¼ö ÀÖ´Ù.ÇÁ·Î±×·¥ ½ÇÇà ½Ã¿¡ ÇÔ¼ö·Î ³»´Â µ¥ÀÌÅÍ µîÀ» ÀϽÃÀûÀ¸·Î º¸°üÇØ µÎ´Â ¼Ò·®ÀÇ ¸Þ¸ð¸®¿Í ÇÊ¿ä½Ã ¾ðÁ¦³ª »ç¿ëÇÒ ¼ö ÀÖ´Â ´ë·®ÀÇ ¸Þ¸ð¸®°¡ ÀÖ´Ù. À̶§, ¼Ò·®ÀÇ ¸Þ¸ð¸®¸¦ ¡®½ºÅá¯À̶ó ÇÏ°í ´ë·®ÀÇ ¸Þ¸ð¸®¸¦ ¡®Èü¡¯ À̶ó°í ÇÑ´Ù. ÀÌ ¡®Èü¡¯ÀÌ ¾ø¾îÁö¸é ¸Þ¸ð¸® ºÎÁ·À¸·Î ¡®ÀÌ»óÁ¾·á¡¯¸¦ ÇÏ°Ô µÈ´Ù.

ÇÁ·Î¼¼½º¿¡ exe À̹ÌÁö°¡ ·ÎµåµÇ°í, ÇÒ´çµÇ°í, À̰ÍÀú°Í ÇÊ¿äÇÑ µ¿Àû ¶óÀ̺귯¸®°¡ ·ÎµåµÇ°í »ç¿ëµÇÁö ¾Ê´Â ¹Ì»ç¿ë ±¸°£ÀÌ ÀÖ´Â °ÍÀº ºÐ¸íÇѵ¥ ±× ¹Ì»ç¿ë ¿µ¿ªÀÌ ¡®Èü¡¯À̶ó°í ÇÑ´Ù. ÇÁ·Î±×·¥À» © ¶§ new³ª malloc()ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ µ¿Àû ÇÒ´çÀ» ÇÏ°Ô µÇ¸é Èü ¿µ¿ªÀÌ »ç¿ë °¡´ÉÇϵµ·Ï µÇ´Â °ÍÀÌ´Ù. ÇÊ¿äÇÑ ¸Þ¸ð¸® »çÀÌÁŭ OS¿¡°Ô ÇÒ´çÇØ ´Þ¶ó°í ºÎŹÇÒ ¼öµµ ÀÖÀ¸¸ç, »ç¿ëÀ» ´Ù ÇßÀ¸¸é ´Ù½Ã OS¿¡°Ô ³Ñ°ÜÁà¾ßÇÑ´Ù.