======================================================================== !!! Ŭ¶óÀÌ¾ðÆ® ½ºÆ®¸µ ó¸® °ü·Ã ÁÖÀÇ »çÇ×. !!! - ¿À¹ö·± ¹®Á¦. ÀÛ¼ºÀÏ : ¿ÀÈÄ 6:26 2006-05-30 ÀÛ¼ºÀÚ : À¯À翵 NOTE : À߸øµÈ ³»¿ëÀÌ ÀÖ´Ù¸é ¼öÁ¤/º¸¿Ï ºÎŹ µå¸³´Ï´Ù. ======================================================================== 1. °³¿ä ½ºÆ®¸µ ȤÀº ½ºÆ®¸² Ä«ÇÇ ºÎºÐ¿¡¼­ ¸Þ¸ð¸® Overrun ÀÌ ¹ß»ýÇÏ¿© Ŭ¶óÀÌ¾ðÆ®°¡ Å©·¹½¬ µÉ ¼ö ÀÖ´Â À§ÇèÀÌ ÀáÀçÇØ ÀÖ½À´Ï´Ù. 2. ó¸® ¹æ¹ý - ÇÔ¼ö »ç¿ë Sprintf -> Snprintf strcpy -> _strncpy Snprintf ´Â ¸ÞÅ©·Î À̸ç À¯´ÏÄÚµå·Î º¯È¯ ÇßÀ»¶§ Áö¿ø°¡´ÉÇÑ ÇÔ¼ö·Î ¸ÞÄªÇØ µÎ¾ú½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â NULL Á¾·áÀÚ°¡ ¾ø´õ¶óµµ Å©·¹½¬°¡ ³ªÁö ¾Êµµ·Ï ƯÁ¤ »çÀÌÁŭÀÇ ½ºÆ®¸µÀ» ¸¸µé¾î ÁÝ´Ï´Ù. _strncpyÀº Utility ÇÁ·ÎÁ§Æ®¿¡ safe_String.h/cpp ¿¡ Á¤ÀÇ µÇ¾îÀÖ½À´Ï´Ù. - »çÀÌÁî °ü·Ã ó¸® ¸ß½º »çÀÌÁî ¿¡ + 1À» ÇÑ´ÙÀ½ ÃʱâÈ­ ÈÄ Á¤º¸¸¦ ƯÁ¤ »çÀÌÁî ¸¸Å­¸¸ º¹»çÇÑ´Ù. ex) TCHAR szTest[MAX_SIZE+1]; ZeroMemroy(szTest, MAX_SIZE+1); Snprintf(szTest, MAX_SIZE, "%s %d", param1, param2 ); //or _strncpy(szTest, ƯÁ¤ ½ºÆ®¸µ, MAX_SIZE ); 3. °ü¸® °á°úÀûÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¾²´Â ½ºÆ®¸µ °ü·Ã º¯¼ö´Â ¹è¿­À» Á÷Á¢ »ç¿ëÇϴ°ͺ¸´Ù´Â ƯÁ¤ ¹è¿­·Î ¹Þ¾ÆÁø ½ºÆ®¸µ Á¤º¸¸¦ std::_tstring À» ÀÌ¿ëÇØ¼­ »ç¿ëÇÏ°í ¿ÜºÎ¿¡¼± ÇØ´ç ½ºÆ®¸µÀ» Á÷Á¢ »ç¿ëÇϱ⺸´Ù´Â GetName(), SetName() ÇÔ¼ö¿Í ¦À» ÀÌ·ï¼­ »ç¿ëÇÏ´Â ÆíÀÌ °ü¸®ÀûÀ¸·Î ÁÁÀ»µí ÇÕ´Ï´Ù. #define SUNSTRING util::_tstring const SUNSTRING & GetName() const; const TCHAR * GetName() const; void SetName( SUNSTRING & rStrName ); void SetName( const TCHAR * pszName ); !! À§ »çÇ×Àº ¸ðµÎ ¾Ë°í ÀÖ´Â ³»¿ëÀ̶ó »ý°¢ µË´Ï´Ù. Ç㹫ÇÏ°Ô ¸Þ¸ð¸® ¿À¹ö·±À» ¾ç»êÇÏÁö ¾ÊÀ¸·Á¸é À§ÀÇ »çÇ×À» ÁöÄÑÁֽñ⠹ٶø´Ï´Ù. Àúµµ Á¶½É ÇϰڽÀ´Ï´Ù. --> Ãß°¡ÀÛ¾÷Àº ¹°·ÐÀÌ°Å´Ï¿Í ÀÌÀü Äڵ嵵 À§ÀÇ ³»¿ëÀ¸·Î ¼öÁ¤ÀÛ¾÷À» ÁøÇà ÇØ¾ßÇÕ´Ï´Ù.