|
1.¿ä¾à ¾ÈÀüÇÏ°Ô free, deleteÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. 2.º»¹® ³Ê¹« °£´ÜÇϰí ÀÌ¹Ì ¸¹Àº »ç¶÷µéÀÌ »ç¿ëÇÏ´Â ÆÁÀÏÁöµµ ¸ð¸£°Ú½À´Ï´Ù. ´Ù ¾Ë°í °è½ÃµíÀÌ free, delete¸¦ À߸øÇÏ´Â °æ¿ì´Â run-time error°¡ ³ª°Ô µÇ¸ç, ½±°Ô À߸øµÈ °÷À» ã±â Èûµç °æ¿ì°¡ Á¾Á¾ ÀÖ½À´Ï´Ù. free, delete·Î ºñ·ÔµÇ´Â run-time error¿Í memory leakÀ» ¸·±âÀ§ÇØ °£´ÜÇÑ ¸ÅÅ©·Î¸¦ ¸¸µé¾î »ç¿ëÇϱ⵵ ÇÏ´Â µ¥ ¿©±â¼´Â ±× ¸ÅÅ©·Î¸¦ ¼Ò°³ÇÕ´Ï´Ù. ÀÌ ¸ÅÅ©·Î´Â ¿ì¼± Æ÷ÀÎÅ͸¦ °Ë»çÇÏ¿© Æ÷ÀÎÅͰ¡ NULLÀÌ ¾Æ´Ñ °æ¿ì¸¸ free³ª delete¸¦ Çϰí, ±× Æ÷ÀÎÅ͸¦ NULL·Î ¸¸µé¾î ´Ù½Ã SAFE_FREE³ª SAFE_DELETE¸¦ ÇÏ¿©µµ ¿¡·¯¸¦ ¹ß»ý½ÃŰÁö ¾Ê½À´Ï´Ù. ÇÑ °¡Áö ÁÖÀÇÇÏ½Ç Á¡Àº ÀÌ ¸ÞÅ©·Î¸¦ ÀÌ¿ëÇϱ⿡ ¾Õ¼ Æ÷ÀÎÅ͸¦ NULL·Î ÃʱâÈ ÇØ ÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. Á¤»óÀûÀ¸·Î mallocÀ̳ª new°¡ ¸ÕÀú ¼öÇØµÇ¸é °ü°è°¡ ¾øÀ¸³ª ÃʱâȰ¡ ¼öÇàµÇ±â Àü¿¡ SAFE_FREE³ª SAFE_DELETE ¹®ÀÌ ¼öÇàµÇ¸é run-time error°¡ ³ª±â ¶§¹®ÀÔ´Ï´Ù.
#ifndef SAFE_DELETE
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#endif // SAFE_DELETE
#ifndef SAFE_FREE
#define SAFE_FREE(p) { if(p) { free(p); (p) = NULL; } }
#endif // SAFE_FREE
3.¿¹Á¦ //¼±¾ðºÎ LPSTR m_pStr ; CDSPlay *m_pDSPlay ; // ÃʱâÈ ºÎºÐ¿¡¼(´ë°Ô Ŭ·¡½ºÀÇ »ý¼ºÀÚ°¡ µÇ°ÚÁö¿ä) m_pStr = NULL; m_pDSPlay = NULL; // ¸Þ¸ð¸® ÇÒ´ç m_pStr = (LPSTR)malloc(1024); m_pDSPlay = (CDSPlay *)new CDSPlay(); // ¸Þ¸ð¸® ¼Ò°Å ¹× ¼Ò¸êÀÚ¿¡¼(¿©·¯¹ø ¼öÇàµÇ¾îµµ °ü°è¾ø½¿) SAFE_FREE(m_pStr); SAFE_DELETE(m_pDelete); - 2001.08.13 Smile Seo - |