´ÙÀ½
ÀÌÀü
Â÷·Ê
C++ ÀÇ delete °ú new ¸í·É¾î´Â "C"ÀÇ malloc °ú free
ÇÔ¼öº¸´Ù ÈξÀ ³´´Ù. malloc °ú free ´ë½Å¿¡ new ¿Í zap (delete) ¸í·É¾î¸¦
°¡´ÉÇÑ ¸¹ÀÌ ¾²µµ·Ï ÇÏÀÚ.
delete¸í·É¾î¸¦ ´õ È®½ÇÈ÷ »ç¿ëÇϱâ À§Çؼ Zap() ¸í·É¾î¸¦ ¸¸µéÀÚ. zap()
¸í·É¾î´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÉ ¼ö ÀÖ´Ù.
/*
**¿Ïº®ÇÏ°í Æ°Æ°ÇÑ ¸ÅÅ©·Î¸¦ ¸¸µé±â À§ÇØ do while À» »ç¿ëÇÑ´Ù.
**¿¹¸¦ µé¾î, ¸¸¾à "do-while"À» ¾²Áö ¾ÊÀ¸¸é, ´ÙÀ½°ú °°ÀÌ µÉ
**°ÍÀÌ´Ù
** if (bbint == 4)
** aa = 0
** else
** zap(aptr); //¹®Á¦¹ß»ý! aptrÀÌ Ç×»ó NULL·Î µÉ °ÍÀÌ´Ù
*/
#define zap(x) do { delete(x); x = NULL; } while (0)
ÀÚ ÀÌÁ¦ ¸ðµç Æ÷ÀÎÅ͵éÀÌ ³Î Æ÷ÀÎÅÍ·Î »ý¼ºµÈ´Ù°í °¡Á¤À» ÇÑ´Ù¸é ÀÏ·ÃÀÇ zap()
¸í·É¾î·Î ´ÙÀ½°ú °°ÀÌ new·Î »ý±ä°ÍµéÀ» ¾ÈÀüÇÏ°Ô »èÁ¦ ÇÒ ¼ö ÀÖ°í ¾ÆÁ÷ new·Î
»ý±âÁö ¾ÊÀº °ÍµéÀ» Áö¿ìÁö ¾ÊÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î,
zap(pFirstname);
zap(pFirstname); // no core dumps !! Because pFirstname is NULL now
zap(pFirstname); // no core dumps !! Because pFirstname is NULL now
zap(pLastname);
zap(pJobDescription);
ÀÌ°ÍÀº ÀüÇô ½Å±âÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ÀÌ°ÍÀº ´ÜÁö ¹Ýº¹µÇ´Â Äڵ带 ¼¼À̺êÇÏ°í ´õ
Àбâ ÁÁ°Ô ¸¸µå´Â °ÍÀÌ´Ù. zap() ¸í·É¾î¿¡¼ typecast¿¡ ÁýÂøÇÏÁö ¸¶¶ó - ¸¸¾à
zap() ¸í·É¾î À§¿¡¼ ¹º°¡ ¿¡·¯°¡ »ý±â¸é ±×°Ç ¾îµò°¡¿¡¼ ´Ù¸¥ ¿¡·¯°¡ ÀÖÀ»
°¡´É¼ºÀÌ Å©±â ¶§¹®ÀÌ´Ù.
¶ÇÇÑ
my_malloc() , my_realloc()
±×¸®°í my_free()´Â ´õ ±ú²ýÇÏ°í additional
checksÀÌ Àֱ⶧¹®¿¡ malloc(), realloc() and free(), ´ë½Å¿¡ »ç¿ëµÇ¾î¾ß
ÇÑ´Ù. ¿¹¸¦ µé¾î
my_malloc() °ú my_free()
ÇÔ¼ö¸¦ »ç¿ëÇÑ mychar.h" º¸¶ó.
ÁÖÀÇ: 'new' ·Î ÀâÇôÁø ¸Þ¸ð¸®À» free()·Î Ç®°Å³ª ¶Ç´« mallocÀ¸·Î
ÀâÇôÁø ¸Þ¸ð¸®¸¦ 'delete' Ç®Áö¸¶¶ó. ÀÌ·Ä °æ¿ì °á°ú¸¦ ¿¹ÃøÇÒ ¼ö ¾ø´Ù.
´ÙÀ½
ÀÌÀü
Â÷·Ê