36-3.auto_ptr

36-3-°¡.ÀÚµ¿È­µÈ ÆÄ±«

C++ÀÇ Å¬·¡½º´Â ÆÄ±«ÀÚ¶ó´Â Ưº°ÇÑ ÇÔ¼ö¸¦ °¡Áö´Âµ¥ ÀÌ ÇÔ¼ö´Â °´Ã¼°¡ ÆÄ±«µÉ ¶§ ÀÚµ¿À¸·Î È£ÃâµÈ´Ù. ±×·¡¼­ °´Ã¼°¡ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇϰųª ½Ã½ºÅÛ ÀÚ¿øÀ» »ç¿ëÇÏ´õ¶óµµ ÆÄ±«ÀÚ¿¡ Á¤¸® Äڵ带 ÀÛ¼ºÇØ ³õÀ¸¸é º°µµÀÇ Á¶Ä¡°¡ ¾ø´õ¶óµµ °´Ã¼°¡ »ç¶óÁú ¶§ ÇØÁ¦ ÀÛ¾÷À» Çϵµ·Ï µÇ¾î ÀÖ´Ù. ÆÄ±«ÀÚÀÇ ÀÌ·± µ¿ÀÛÀº ±²ÀåÈ÷ Æí¸®Çѵ¥ Áö¿ª °´Ã¼ÀÏ °æ¿ì ÇÔ¼ö¾È¿¡¼­ ¸¶À½´ë·Î ¸¸µé¾î ¾²´Ù°¡ ±×³É ³ª°¡±â¸¸ ÇÏ¸é µÈ´Ù. ¹üÀ§¸¦ ¹þ¾î³­ º¯¼ö´Â ½ºÅÿ¡¼­ Á¦°ÅµÇ¸ç À̶§ °´Ã¼ÀÇ ÆÄ±«ÀÚ°¡ È£ÃâµÇ¾î ÀÚ½ÅÀÌ »ç¿ëÇÏ´ø ÀÚ¿øÀ» ¾Ë¾Æ¼­ Á¤¸®ÇÏ´Â °ÍÀÌ´Ù.

¾Õ Àý¿¡¼­ ¿¬±¸ÇØ º» string Ŭ·¡½º¸¦ »ý°¢ÇØ º¸¸é ÆÄ±«ÀÚ°¡ ¾ó¸¶³ª Æí¸®ÇѰ¡¸¦ ¾Ë ¼ö ÀÖ´Ù. string °´Ã¼´Â °¡º¯ ±æÀÌÀÇ ¹®ÀÚ¿­À» ÀúÀåÇϱâ À§ÇØ ¹öÆÛ¸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇØ¼­ °ü¸®Çϴµ¥ °³¹ßÀÚ°¡ ½Å°æ¾²Áö ¾Ê¾Æµµ ÀÌ ¸Þ¸ð¸®´Â ÀÚµ¿À¸·Î ȸ¼öµÈ´Ù. ÀÌ·± ¸éÀ» º¸¸é ÆÄ±«ÀÚ´Â ¿ª½Ã Æí¸®ÇÑ ÇÔ¼öÀÌ´Ù. ±×·¯³ª ÆÄ±«ÀÚ´Â ½ºÅÿ¡ Á¤ÀûÀ¸·Î ÇÒ´çµÈ °´Ã¼¿¡ ´ëÇØ¼­¸¸ µ¿ÀÛÇÏ¸ç µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¿¡ ´ëÇØ¼­´Â Ã¥ÀÓÁöÁö ¾Ê´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : dynalloc

#include <iostream>

using namespace std;

 

void main()

{

     double *rate;

 

     rate=new double;

     *rate=3.1415;

     cout << *rate << endl;

     // delete rate;

}

 

½Ç¼öÇü º¯¼ö¸¦ °¡¸®Å°´Â rate Æ÷ÀÎÅ͸¦ ¼±¾ðÇϰí ÀÌ Æ÷ÀÎÅÍ¿¡ ½Ç¼öÇüÀÇ ±æÀ̸¸Å­ µ¿Àû ÇÒ´çÇÏ¿© ±× ¹øÁö¸¦ ÀúÀåÇß´Ù. ÀÌ·¸°Ô µÇ¸é *rate´Â ½Ç¼öÇü º¯¼ö°¡ µÇ¹Ç·Î µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ½Ç¼öÇü º¯¼öó·³ »ç¿ëÇÒ ¼ö ÀÖ´Ù. rate´Â ÀÌ ÇÔ¼öÀÇ Áö¿ªº¯¼öÀ̹ǷΠÇÔ¼ö°¡ Á¾·áµÉ ¶§ ÀÚµ¿À¸·Î ÇØÁ¦µÈ´Ù. ±×·¯³ª rate°¡ °¡¸®Å°´Â ¸Þ¸ð¸®´Â ÀÚµ¿À¸·Î ÇØÁ¦µÇÁö ¾Ê´Âµ¥ µ¿ÀûÀ¸·Î ÇÒ´çÇß´Ù´Â °ÍÀº ÇÊ¿äÇÒ ¶§±îÁö ¾²°Ú´Ù´Â ÀÇ»ç Ç¥ÇöÀ̹ǷΠÁ÷Á¢ ÇØÁ¦Çϱâ Àü±îÁö´Â Èü¿¡ °è¼Ó ³²¾Æ Àִ´Ù.

¸Þ¸ð¸® °ü¸® ¿øÄ¢¿¡ ÀÇÇØ ÇÑ ¹ø ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ÇØÁ¦ÇÒ ¶§±îÁö ´Ù¸¥ ¿ëµµ·Î Àç»ç¿ëµÇÁö ¾ÊÀ¸¹Ç·Î ¸í½ÃÀûÀ¸·Î delete¸¦ È£ÃâÇØ¾ß¸¸ ÇØÁ¦µÈ´Ù. ±×·¡¼­ µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ¹Ýµå½Ã ´ëÀÀµÇ´Â ÇØÁ¦ ÄÚµå(free, delete)·Î ÇØÁ¦ÇØ¾ß ÇÑ´Ù. À§ ¿¹Á¦¿¡´Â delete È£Ãâ¹®ÀÌ ÁÖ¼®À¸·Î 󸮵Ǿî ÀÖÀ¸¹Ç·Î ÀÌ·¸°Ô µÇ¸é ÇÒ´çÇÑ ¸Þ¸ð¸®¸¦ ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾ø´Â ¸Þ¸ð¸® ´©¼ö(Memory Leak)°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®´Â À̸§ÀÌ ¾øÀ¸¹Ç·Î Æ÷ÀÎÅ͸¦ ÀÒ¾î ¹ö¸®¸é ´õ ÀÌ»ó ÂüÁ¶ÇÒ ¼ö ¾ø°í ÇØÁ¦ÇÏÁöµµ ¸øÇÑ´Ù.

¹°·Ð ÀÌ·± ªÀº Äڵ忡¼­ delete¹®À» »© ¸Ô´Â ½Ç¼ö´Â Àß ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª Äڵ尡 ¾ÆÁÖ ±æ°í º¹ÀâÇÏ´Ù º¸¸é ÇØÁ¦ÇÏ´Â Äڵ带 ±ô¹Ú ÀØ¾î ¹ö¸®´Â °æ¿ì°¡ Á¾Á¾ ÀÖ´Ù. ¶Ç´Â ÇØÁ¦ÇÏ´Â Äڵ尡 ÀÖ´Ù ÇÏ´õ¶óµµ ¿¹¿Ü ó¸® ±¸¹®¿¡ ÀÇÇØ ÇÔ¼ö¸¦ °­Á¦·Î Á¾·áÇÒ ¶§´Â ÀÌ Äڵ尡 ½ÇÇàµÇÁö ¸øÇÏ´Â °æ¿ìµµ Àִµ¥ ´ÙÀ½ Äڵ尡 ÀÌ·± ¿¹¸¦ º¸¿© ÁØ´Ù.

 

void func()

{

     double *rate=new double(3.14);

     if (¾î¶² Á¶°Ç) {

          throw("¾ß! ¶È¹Ù·Î ¸øÇØ");

     }

     ....

     delete rate;

}

 

Á¤»óÀûÀÎ ½ÇÇà È帧À̶ó¸é new¿Í delete°¡ ¦À» ÀÌ·ç¾î ÇÒ´ç, ÇØÁ¦°¡ ÀÌ»ó¾øÀÌ ÁøÇàµÇÁö¸¸ ¿¹¿Ü Á¶°Ç¿¡ ÀÇÇØ throw¸¦ È£ÃâÇϸé ÇÔ¼ö ½ÇÇàÀ» Áï½Ã ÁßÁöÇϰí È£ÃâºÎÀÇ catch·Î Á¡ÇÁÇØ ¹ö¸®¹Ç·Î delete´Â ½ÇÇàµÇÁö ¸øÇÑ´Ù. ÀÌ·² °æ¿ì ¿¹¿Ü ó¸® ±¸¹®Àº ½ºÅà µÇ°¨±â¸¦ ÅëÇØ Áö¿ª °´Ã¼ÀÇ ÆÄ±«ÀÚ¸¦ ÀÚµ¿À¸·Î È£ÃâÇϵµ·Ï µÇ¾î ÀÖÁö¸¸ Áö¿ª °´Ã¼°¡ °¡¸®Å°´Â ¸Þ¸ð¸®±îÁö ÇØÁ¦µÇ´Â °ÍÀº ¾Æ´Ï´Ù. µû¶ó¼­ ºÒ°¡ÇÇÇÏ°Ô ¸Þ¸ð¸® ´©¼ö°¡ ¹ß»ýÇÏ°Ô µÈ´Ù.

ÀÌ·± ½ÄÀÇ ¸Þ¸ð¸® ´©¼ö´Â ¾çÀÌ ¸¹Áö ¾ÊÀ» °æ¿ì ´çÀåÀº º° ¹®Á¦°¡ µÇÁö ¾ÊÀ¸¸ç ÄÄÆÄÀÏ Áß¿¡ ¿¡·¯°¡ ³ª´Â °Íµµ ¾Æ´Ï´Ù. ±×·¯³ª ¿À·§µ¿¾È ½ÇÇàµÇ´Â ÇÁ·Î±×·¥Àº ½Ã½ºÅÛ ÀÚ¿øÀ» ¾ß±Ý ¾ß±Ý °¦¾Æ ¸ÔÀ¸¹Ç·Î ¾ðÁ¨°¡´Â ¸»½éÀ» ºÎ¸± °ÍÀÌ´Ù. ÀÌ ¹®Á¦´Â »ý°¢º¸´Ù ½É°¢Çѵ¥ »ç¶÷Àº ÇØÁ¦ Äڵ带 »©¸Ô´Â ½Ç¼ö¸¦ Á¾Á¾ Çϴµ¥ ºñÇØ ¸î ´Þ, ¸î ³âµ¿¾ÈÀ̳ª ½ÇÇàµÇ¾î¾ß ÇÏ´Â ¼­¹ö ÇÁ·Î±×·¥ÀÇ °æ¿ì Á¶±ÝÀÇ ¸Þ¸ð¸® ´©¼öµµ Çã¿ëµÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ¸ÖƼ ŽºÅ· ȯ°æ¿¡¼­ ¸Þ¸ð¸® ´©¼ö´Â ÀڽŻӸ¸ ¾Æ´Ï¶ó °°ÀÌ ½ÇÇàµÇ´Â ´Ù¸¥ ÇÁ·Î±×·¥¿¡µµ ÇÇÇØ¸¦ ³¢Ä£´Ù´Â Á¡¿¡¼­ ½É°¢ÇÏ´Ù.

´Ü¼ø Æ÷ÀÎÅÍ´Â ÆÄ±«ÀÚ¸¦ °¡ÁöÁö ¾Ê±â ¶§¹®¿¡ C++ÀÇ ÆÄ±«Àڷδ ÀÌ ¹®Á¦¸¦ Á¦´ë·Î ÇØ°áÇÒ ¼ö ¾ø´Ù. Æ÷ÀÎÅÍ º¯¼ö¸¸ ÇØÁ¦µÉ »ÓÀÌÁö Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ¸Þ¸ð¸®´Â ÇØÁ¦µÇÁö ¾Ê´Â´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ¸¸µé¾îÁø °ÍÀÌ ¹Ù·Î auto_ptrÀÌ´Ù. auto_ptrÀº µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®µµ ÀÚµ¿À¸·Î ÇØÁ¦ÇÏ´Â ±â´ÉÀ» °¡Áö´Â Æ÷ÀÎÅÍÀÇ ·¡ÆÛ Ŭ·¡½ºÀÌ´Ù. auto_ptrÀÇ ÆÄ±«ÀÚ¿¡ Æ÷ÀÎÅÍ ÇØÁ¦ Äڵ带 ÀÛ¼ºÇÏ¸é ¾î¶² °æ¿ì¶óµµ ¾ÈÀüÇÑ ÇØÁ¦¸¦ º¸ÀåÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : auto_ptr

#include <iostream>

#include <memory>

using namespace std;

 

void main()

{

     auto_ptr<double> rate(new double);

    

     *rate=3.1415;

     cout << *rate << endl;

}

 

auto_ptr ÅÛÇø´Àº memory Çì´õ ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î »ç¿ëÇÏ·Á¸é ÀÌ Çì´õ ÆÄÀÏÀ» ¸ÕÀú Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù. auto_ptrÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî Àִ Ŭ·¡½º ÅÛÇø´ÀÌ´Ù.

 

template<typename T> class auto_ptr

 

Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ´ë»óüÀÇ Å¸ÀÔ T¸¦ Àμö·Î ¹Þ¾Æ µéÀ̸ç T *ÇüÀÇ Æ÷ÀÎÅ͸¦ ´ë½Å °ü¸®ÇÑ´Ù. »ý¼ºÀÚ·Î Æ÷ÀÎÅ͸¦ Àü´ÞÇϸé ÀÌ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Ù°¡ ÆÄ±«ÀÚ¿¡¼­ delete·Î ÇØÁ¦ÇϹǷΠÆ÷ÀÎÅͻӸ¸ ¾Æ´Ï¶ó Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ¸Þ¸ð¸®µµ ÀÚµ¿À¸·Î ÇØÁ¦µÈ´Ù. ¿¹Á¦ Äڵ带 º¸¸é auto_ptr<double> ŸÀÔÀÇ °´Ã¼ rate¸¦ ¼±¾ðÇ쵂 »õ·Î¿î doubleÇü º¯¼ö¸¦ µ¿Àû ÇÒ´çÇÏ¿© »ý¼ºÀÚ·Î Àü´ÞÇß´Ù.

auto_ptrÀº ÀÌ Æ÷ÀÎÅ͸¦ ³»ºÎ ¸â¹ö º¯¼ö¿¡ ÀúÀåÇØ ³õ°í *, ->, = µî Æ÷ÀÎÅÍ¿¡ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¿© ÀÌ °´Ã¼¿¡ ´ëÇÑ ¸ðµç ¿¬»êÀ» ³»ºÎ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ¿¬»êÀ¸·Î Áß°èÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ±×·¡¼­ rate¸¦ ¸¶Ä¡ doubleÇüÀÇ Æ÷ÀÎÅÍÀÎ °Íó·³ »ç¿ëÇÒ ¼ö ÀÖ´Ù. rate°´Ã¼¿¡ *¿¬»êÀÚ¸¦ Àû¿ëÇÏ¸é µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇØ *¿¬»êÀÚ°¡ Àû¿ëµÇ¾î ÀÌ °ªÀ» Àаųª º¯°æÇÒ ¼ö ÀÖ´Ù. ·¡ÆÛÀ̹ǷΠ·¡ÇÎÇÑ ´ë»óÀ» ±×´ë·Î Èä³»³»´Â °ÍÀÌ´Ù.

rateÀÇ ÆÄ±«ÀÚ¿¡¼­´Â delete¸¦ ÀÚµ¿À¸·Î È£ÃâÇϹǷΠÇÔ¼ö°¡ ³¡³¯ ¶§ rate¸¦ ÇØÁ¦ÇÒ Çʿ䰡 ¾øÀ¸¸ç ÇØÁ¦µÇÁöµµ ¾Ê´Â´Ù. delete rate Äڵ带 ÇÔ¼ö ³¡¿¡ ÀÛ¼ºÇϸé ÄÄÆÄÀÏ ¿¡·¯·Î 󸮵Ǵµ¥ rate °´Ã¼ ÀÚü´Â Æ÷ÀÎÅͰ¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ¿¹¿Ü ó¸® ±¸¹®¿¡ ÀÇÇØ ½ºÅà µÇ°¨±â¸¦ ½ÇÇàÇÒ ¶§µµ rate°´Ã¼ÀÇ ÆÄ±«ÀÚ°¡ È£ÃâµÇ¸ç À̶§ ¸Þ¸ð¸®µµ ÇØÁ¦µÈ´Ù. ´Ü¼ø Æ÷ÀÎÅÍ´Â ÆÄ±«ÀÚ°¡ ¾øÁö¸¸ auto_ptrÀº Ŭ·¡½ºÀ̹ǷΠÆÄ±«ÀÚ°¡ È£ÃâµÈ´Ù.

´ÙÀ½Àº Á» ´õ º¹ÀâÇÑ ¿¹Á¦¸¦ º¸ÀÚ. ´Ü¼ø ŸÀÔ¿¡ ´ëÇÑ Æ÷ÀÎÅͰ¡ ¾Æ´Ñ °´Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ auto_ptr·Î °ü¸®ÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â string °´Ã¼¸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ÈÄ ÇØÁ¦ÇÏÁö ¾Ê°í ¸®ÅÏÇÔÀ¸·Î½á ÀǵµÀûÀ¸·Î ¸Þ¸ð¸® ´©¼ö¸¦ ¹ß»ý½ÃŲ´Ù.

 

¿¹ Á¦ : dynstring

#include <Turboc.h>

#include <string>

#include <iostream>

using namespace std;

 

 

void main()

{

     string *pStr=new string("AutoPtr Test");

 

     cout << *pStr << endl;

     // delete pStr;

}

 

pStr º¯¼ö¸¸ ÆÄ±«µÉ »Ó ÀÌ º¯¼ö°¡ °¡¸®Å°´Â string °´Ã¼´Â ÆÄ±«µÇÁö ¾ÊÀ¸¸ç »Ó¸¸ ¾Æ´Ï¶ó string °´Ã¼°¡ °ü¸®ÇÏ´Â ¹®ÀÚ¿­ ¹öÆÛµµ ÆÄ±«µÇÁö ¾Ê´Â´Ù. ¸¸¾à ¹®ÀÚ¿­ÀÇ ±æÀ̰¡ ¾ÆÁÖ ±æ´Ù¸é À̶§ÀÇ ¸Þ¸ð¸® ´©¼ö´Â ½É°¢ÇÑ ½Ã½ºÅÛ ÀÚ¿ø ´©ÃâÀÌ µÉ °ÍÀÌ´Ù. string °´Ã¼´Â µ¿ÀûÀ¸·Î ÇÒ´çµÇ¾úÀ¸¹Ç·Î ÇÔ¼ö°¡ Á¾·áµÉ ¶§ ÀÚµ¿À¸·Î ÆÄ±«µÇÁö ¾ÊÀ¸¸ç ¿¹¿Ü ó¸® ±¸¹®¿¡ ÀÇÇØ °­Á¦ Á¾·áµÉ ¶§µµ ¸¶Âù°¡ÁöÀÌ´Ù. ÀÌ ¹®Á¦µµ auto_ptrÀ» »ç¿ëÇϸé ÇØ°áÇÒ ¼ö ÀÖ´Ù.

 

¿¹ Á¦ : autostring

#include <Turboc.h>

#include <string>

#include <iostream>

#include <memory>

using namespace std;

 

 

void main()

{

     auto_ptr<string> pStr(new string("AutoPtr Test"));

 

     cout << *pStr << endl;

}

 

string ´ë»óü¸¦ °¡¸®Å°´Â auto_ptr °´Ã¼ pStrÀ» ¼±¾ðÇÏ°í »õ·Î¿î string°´Ã¼¸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¹øÁö¸¦ »ý¼ºÀÚ·Î Àü´ÞÇß´Ù. À̶§ pStrÀÇ ¸Þ¸ð¸® ³»ºÎ´Â ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº ¸ð¾çÀÌ µÉ °ÍÀÌ´Ù.

main ÇÔ¼ö°¡ Á¾·áµÇ¸é Áö¿ª °´Ã¼ pStrÀÌ ÆÄ±«µÇ¸ç ÀÌ °úÁ¤¿¡¼­ pStrÀÇ ÆÄ±«ÀÚ°¡ È£ÃâµÈ´Ù. ÆÄ±«ÀÚ´Â ³»ºÎÀûÀ¸·Î À¯ÁöÇϰí ÀÖ´Â Æ÷ÀÎÅ͸¦ deleteÇÑ´Ù. »èÁ¦µÇ´Â ´ë»óÀÌ string °´Ã¼À̹ǷΠÀÌ °úÁ¤¿¡¼­ stringÀÇ ÆÄ±«ÀÚ°¡ È£ÃâµÇ¸ç ¹®ÀÚ¿­ ¹öÆÛµµ Á¤¸®µÈ´Ù. ¼³»ç mainÀÌ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ´õ¶óµµ Á¤¸® Äڵ尡 ÀÚµ¿À¸·Î ½ÇÇàµÇ¹Ç·Î ¸Þ¸ð¸® ´©¼ö´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù.

µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇϰųª °´Ã¼¸¦ »ý¼ºÇÒ ¶§´Â auto_ptr ÅÛÇø´À» »ç¿ëÇϸé È®½ÇÈ÷ ¾ÈÀüÇϱâ´Â ÇÏ´Ù. ±×·¯³ª ´Ü¼ø Æ÷ÀÎÅ͸¦ ¾²´Â °Í¿¡ ºñÇØ ´Ù¼Ò ¹ø°Å·Ó´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÚ½ÅÀÌ Ã¥ÀÓÁö°í ÇØÁ¦ÇѴٰųª ¿¹¿Ü°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀüÇô ¾ø´Ù¸é ±»ÀÌ auto_ptrÀ» ¾²Áö ¾Ê¾Æµµ »ó°ü¾ø´Ù. ±×·¯³ª ¸¹Àº °³¹ßÀÚµéÀÌ ÀÌ·± È®½ÅÀ» ÇÏÁö ¸øÇϱ⠶§¹®¿¡ µ¿Àû ÇÒ´çÇÒ ¶§´Â auto_ptrÀ» ÅëÇØ È®½ÇÇÑ ÇØÁ¦¸¦ º¸Àå¹Þ°íÀÚ ÇÏ´Â °ÍÀÌ´Ù.