1 °³¿ä
¸Þ¸ð¸® ´©¼ö¿Í °ü·ÃµÈ ¹®Á¦¸¦ ÁÙ¿©ÁÖ´Â ¶È¶ÈÇÑ Æ÷ÀÎÅÍ ¶óÀ̺귯¸®.
2 boost::shared_ptr
·¹ÆÛ·±½º Ä«¿îÆÃÀÌ Àû¿ëµÈ ½º¸¶Æ® Æ÷ÀÎÅÍ Å¬·¡½º.
¿¹¸¦ µé¾î ¾Æ·¡¿Í °°ÀÌ ¾î¶² °´Ã¼¸¦ »õ·Î »ý¼ºÇؼ ¹ÝȯÇÏ´Â ÇÔ¼ö°¡ ÀÖ´Ù°í ÇÏÀÚ.
Object* createObject() const { return new Object(); }
int some_function()
{
...
Object* pObject = createObject();
pObject->do_something();
delete pObject; // Àؾî¹ö¸®¸é °ï¶õµ¥½º.
} ¸¸ÀÏ ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¿¡¼ ¹ÝȯµÈ °´Ã¼¸¦ »ç¿ë ÈÄ, »èÁ¦ÇÏ´Â ÀÏÀ» Àؾî¹ö¸°´Ù¸é ¸Þ¸ð¸® ´©¼ö°¡ »ý±â°Ô µÈ´Ù. ÀÌ·± ÀÏÀ» ¹æÁöÇϱâ À§ÇØ shared_ptrÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
typedef boost::shared_ptr<Object> ObjectPtr;
ObjectPtr createObject() const { return ObjectPtr(new Object()); }
int some_function()
{
...
ObjectPtr pObject = createObject();
pObject->do_something();
//delete pObject; delete¸¦ È£ÃâÇÒ Çʿ䰡 ¾ø´Ù. È£ÃâÇÏ¸é ¾È µÈ´Ù. -_-;
}
3 boost::scoped_ptr
½ºÄÚÇÁ¸¦ ¹þ¾î³ª¸é »èÁ¦ÇؾßÇÏ´Â °´Ã¼°¡ ÀÖÀ» °æ¿ì, ÁÖ·Î »ç¿ëÇÏ°Ô µÇ´Â ½º¸¶Æ® Æ÷ÀÎÅÍ Å¬·¡½º. À§¿¡¼ ³ª¿Â shared_ptr Ŭ·¡½º¿Í ¸¶Âù°¡Áö·Î ¸Þ¸ð¸® ´©¼ö¸¦ ¹æÁöÇϱâ À§ÇÑ Å¬·¡½ºÀε¥, ´Ù¸¸ ·¹ÆÛ·±½º Ä«¿îÆÃ¿¡ ÀÇÇØ ½ÇÁ¦ °´Ã¼¸¦ »èÁ¦ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ½ºÄÚÇÁ¸¦ ¹þ¾î³ª¸é ½ÇÁ¦ °´Ã¼¸¦ »èÁ¦Çϴ Ŭ·¡½ºÀÌ´Ù.
4 ±âŸ
- ÀϹÝÀûÀÎ STL Ŭ·¡½ºµé°ú ¸¶Âù°¡Áö·Î ½º·¹µå ¼¼ÀÌÇÁÇÏÁö ¾Ê´Ù. (Àб⸸ ÇÏ´Â °Ç ±¦Âú´Ù.)
- scoped_ptr, shared_ptr À̿ܿ¡µµ scoped_array, shared_array Ŭ·¡½ºµµ Àִµ¥, À̸§ÀÌ ¸»ÇØÁÖµíÀÌ °´Ã¼ Çϳª°¡ ¾Æ´Ï¶ó, °´Ã¼ÀÇ ¹è¿À» ´Ù·ç´Â Ŭ·¡½ºµéÀÌ´Ù. »ç¿ë¹ýÀº °°´Ù.
5 ¸µÅ©
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)