.\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the American National Standards Committee X3, on Information .\" Processing Systems. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#) malloc. 3 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/stdlib/malloc. 3, v 1.25. 2.14 2001/12/14 18:33:58 ru Exp % .\" $FreeBSD: doc/ja_JP.eucJP/man/man3/malloc. 3, v 1.5 2002/05/18 07:12:55 horikawa Exp $ .\" .Dd August 27, 1996 .Dt MALLOC 3 .Os .Sh ¸íĪ .Nm malloc , calloc , realloc , free , reallocf .Nd ¹ü¿ëÀÇ ¸Þ¸ð¸® ÇÒ´çÀ» À§ÇÑ ÇÔ¼ö±º .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In stdlib.h .Ft void * .Fn malloc "size_t size" .Ft void * .Fn calloc "size_t number" "size_t size" .Ft void * .Fn realloc "void *ptr" "size_t size" .Ft void * .Fn reallocf "void *ptr" "size_t size" .Ft void .Fn free "void *ptr" .Ft char * .Va malloc_options; .Sh ÇØ¼³ .Fn malloc ÇÔ¼ö´Â, .Fa size ¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÕ´Ï´Ù. ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø °ø°£Àº (°¡´ÉÇÑ Æ÷ÀÎÅÍ °­Á¦ÀÇ ÈÄ¿¡) ¸ðµç ŸÀÔÀÇ ¿ÀºêÁ§Æ®¸¦ º¸Á¸ÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÀûÀýÈ÷ Á¶Á¤µË´Ï´Ù. ±× °ø°£ÀÇ ±æÀ̰¡ Àû¾îµµ .Em pagesize ¹ÙÀÌÆ®ÀÎ °æ¿ì ( .Xr getpagesize 3 ÂüÁ¶), µ¹·ÁÁÖ¾îÁö´Â ¸Þ¸ð¸®´Â ÆäÀÌÁö °æ°è°¡ Á¶Á¤µÇ°í ÀÖ°ÚÁö¿ä. .Fn malloc ¿¡ ½ÇÆÐÇϸé(ÀÚ), .Dv NULL Æ÷ÀÎÅͰ¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. .Pp Åë»ó .Fn malloc ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¸Þ¸ð¸®´Â, 0 ÀÇ ¹ÙÀÌÆ®·Î ÃʱâÈ­µÇ¾î .Em ¾ø´Ù ÀÏ·Î ÁÖÀÇÇØ ÁÖ¼¼¿ä. .Pp .Fn calloc ÇÔ¼ö´Â, .Fa number °³ÀÇ, ±æÀ̰¡ .Fa size ÀÎ ¿ÀºêÁ§Æ®¿¡ °ø°£À» ÇÒ´çÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ °á°ú´Â, ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸®°¡ 0 ÀÇ ¹ÙÀÌÆ®¿¡ ¸í½ÃÀûÀ¸·Î ÃʱâÈ­µÇ°í ÀÖ´Â °ÍÀ» Á¦¿ÜÇϸé, Àμö .Dq "number * size" ±×¸®°í .Fn malloc (À»)¸¦ È£ÃâÇÑ °á°ú¿Í °°½À´Ï´Ù. .Pp .Fn realloc ÇÔ¼ö´Â, .Fa ptr ±×¸®°í ÂüÁ¶µÇ´Â, ÀÌÀü¿¡ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸®ÀÇ »çÀÌÁ .Fa size ¹ÙÀÌÆ®·Î º¯°æÇÕ´Ï´Ù. »õ·Î¿î »çÀÌÁî¿Í ³°Àº »çÀÌÁî °¡¿îµ¥, ÀÛÀº (ºÐ)ÆíÀÇ »çÀÌÁî±îÁöÀÇ ¸Þ¸ð¸® ³»¿ëÀº º¯°æµÇÁö ¾Ê½À´Ï´Ù. »õ·Î¿î »çÀÌÁî°¡ Å« °æ¿ì, »õ·Ó°Ô ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ºÎºÐÀÇ ¸Þ¸ð¸®ÀÇ °ªÀº ¹ÌÁ¤µµ¸®ÀÔ´Ï´Ù. ¿ä±¸µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö°¡ ¾ø¾ú´ø °æ¿ì´Â .Dv NULL ÇÏÁö¸¸ µ¹·ÁÁÖ¾îÁý´Ï´Ù¸¸, .Fa ptr ÇÏÁö¸¸ ÂüÁ¶ÇÏ´Â ¸Þ¸ð¸®´Â À¯È¿ÇØ º¯°æµÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. .Fa ptr ÇÏÁö¸¸ .Dv NULL ÀÎ °æ¿ì, .Fn realloc ÇÔ¼ö´Â, ÁöÁ¤ÇÑ »çÀÌÁîÀÇ .Fn malloc (¿Í)°ú °°Àº ¿òÁ÷ÀÓÀ» ÇÕ´Ï´Ù. .Pp .Fn reallocf ÇÔ¼ö´Â, ¿ä±¸µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö°¡ ¾ø¾ú´ø °æ¿ì¿¡, °Ç³×¹ÞÀº Æ÷ÀÎÅ͸¦ ÇØ¹æÇÏ´Â °ÍÀ» Á¦¿ÜÇϸé, .Fn realloc ÇÔ¼ö È£Ãâ°ú °°½À´Ï´Ù. À̰ÍÀº .Fx ¿¡ °íÀ¯ÀÇ API ·Î, .Fn realloc ÀÇ Á¾·¡ÇüÀÇ ÄÚµù ½ºÅ¸ÀÏÀ» ÀÌ¿ëÇϸé(ÀÚ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ³»ºÎ¿¡¼­ ¸Þ¸ð¸® ¸®Å©¸¦ ÀÏÀ¸Å²´Ù°í ÇÑ´Ù ¹®Á¦¸¦ ¾ø¾Ö±â À§Çؼ­(¶§¹®¿¡) ¼³°èµÇ¾ú½À´Ï´Ù. .Pp .Fn free ÇÔ¼ö´Â, .Fa ptr ±×¸®°í ÂüÁ¶µÇ´Â ÇÒ´ç ³¡³­ ¸Þ¸ð¸®¸¦ ÇâÈÄÀÇ ÇÒ´çÀ» À§Çؼ­(¶§¹®¿¡) »ç¿ëÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. .Fa ptr ÇÏÁö¸¸ .Dv NULL ÀÎ °æ¿ì, ¾Æ¹«°Íµµ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. .Pp .Sh Á¶Á¤ ÀÌ·¯ÇÑ ¸Þ¸ð¸® ÇÒ´ç routine±ºÀÇ 1 °³°¡ óÀ½À¸·Î ºÒ·Á °¥ ¶§, ÀÌ ÇÒ´ç ½ÇÇàÀÇ µ¿ÀÛ¿¡ ¿µÇâÀ» ÁØ´Ù ´Ù¾çÇÑ Ç÷¡±×°¡ ¼¼Æ® ȤÀº ¸®¼ÂÆ® µË´Ï´Ù. .Pp .Pa /etc/malloc.conf ±×·¸´Ù°í ÇÏ´Â ±âÈ£ ¿¬°á·Î ÂüÁ¶µÇ´Â ÆÄÀÏÀÇ ¡¸¸íĪ¡¹, ȯ°æ º¯¼ö .Ev MALLOC_OPTIONS ÀÇ °ª, ±Û·Î¹ú º¯¼ö .Va malloc_options ÇÏÁö¸¸ °¡¸®Å°´Â ij¸¯ÅÍ ¶óÀÎÀº, ÀÌ ¼ø¼­·Î 1 ij¸¯Å͸¶´Ù Ç÷¡±×·Î¼­ ÇØ¼®µË´Ï´Ù. .Pp ´ëºÎºÐÀÇ Ç÷¡±×´Â 1 ij¸¯ÅÍ·Î, ´ë¹®ÀÚ´Â µ¿ÀÛÀÌ ¼³Á¤µÈ °Í, Áï ¿ÂÀÌ µÇ¾î ÀÖ´Â °ÍÀ» ³ªÅ¸³», ¼Ò¹®ÀÚ´Â µ¿ÀÛÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °Í, Áï ¿ÀÇÁ°¡ µÇ¾î ÀÖ´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. .Bl -tag -width indent .It A ¸ðµç °æ°í (ÀÌÇØÇÒ ¼ö ¾ø´Â Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ´Ù°í ÇÏ´Â °æ°í¸¦ Á¦¿ÜÇÏ´Ù)(À»)¸¦ Ä¡¸íÀû ¿¡·¯·Î ÇÕ´Ï´Ù. ÀÌ °æ¿ì, ÇÁ·Î¼¼½º´Â .Xr abort 3 (À»)¸¦ È£ÃâÇÕ´Ï´Ù. .It J .Fn malloc , .Fn realloc , .Fn reallocf ¿¡ ÇÒ´çÇÒ ¼ö ÀÖ´Â ½Å±ÔÀÇ ¸Þ¸ð¸®, ¶È°°ÀÌ .Fn free , .Fn realloc , .Fn reallocf ±×¸®°í µ¹·ÁÁÖ¾îÁö´Â ¸Þ¸ð¸®ÀÇ °¢ ¹ÙÀÌÆ®¸¦ 0xd0 ¿¡ ÃʱâÈ­ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº .Dq R ¿É¼Çµµ ¼¼Æ® ÇÕ´Ï´Ù. À̰ÍÀº µð¹ö±×¿ëÀÇ ¿É¼ÇÀ¸·Î, ÆÛÆ÷¸Õ½ºÀÇ ÀúÇÏ¿¡ °­ÇÑ ¿µÇâÀ» ÁÝ´Ï´Ù. .It H ÇÒ´ç ÇÔ¼ö·Î »ç¿ëµÇÁö ¾ÊÀº ÆäÀÌÁö¿¡ °üÇÑ ÈùÆ®¸¦ Ä¿³Î¿¡°Ô ÁÝ´Ï´Ù. ½Ã½ºÅÛÀÌ °úµµÇÏ°Ô ÆäÀÌ¡À» ½Ç½ÃÇϰí ÀÖ´Â °æ¿ì´Â, ÆÛÆ÷¸Õ½º°¡ Çâ»óÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº, µðÆúÆ®·Î ¿ÀÇÁ°¡ µÇ¾î ÀÖ½À´Ï´Ù. .It R ÃÖÃÊÀÇ ÇÒ´çÀÌ ÃæºÐÈ÷ Å« °æ¿ì¿©µµ, .Fn realloc ÇÔ¼ö¿Í .Fn reallocf ÇÔ¼ö°¡ Ç×»ó ¸Þ¸ð¸®ÀÇ ÀçÇÒÀÎ ¸ÂÈ÷°í¸¦ ÇÏ°Ô µË´Ï´Ù. ¸Þ¸ð¸®¸¦ ¾ÐÃàÇÏ´Â °æ¿ìÀÇ Å« µµ¿òÀÌ µË´Ï´Ù. .It U ¸ðµç ¿ÀÆÛ·¹À̼ÇÀ¸·Î, .Xr ktrace 1 (À»)¸¦ À§ÇÑ .Dq utrace ¿£Æ®¸®¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, ¼Ò½º¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. .It V 0 ¹ÙÀÌÆ®¸¦ ÇÒ´çÇÏ·Á°í ÇßÀ» ¶§¿¡, À¯È¿ÇÑ Æ÷ÀÎÅÍ ´ë½Å¿¡ .Dv NULL Æ÷ÀÎÅͰ¡ µ¹·ÁÁÖ¾îÁö°Ô µË´Ï´Ù (µðÆúÆ®ÀÇ µ¿ÀÛ¿¡¼­´Â, ÃÖ¼ÒÀÇ ÇÒ´çÀ» ½Ç½ÃÇØ, ±× Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù). ÀÌ ¿É¼ÇÀº System V ¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ­(¶§¹®¿¡) Á¦°øµÇ°í ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀº .Dq X ¿É¼Ç°ú ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. .It X ÇÒ´ç ÇÔ¼ö·Î ¿¡·¯¸¦ µ¹·ÁÁÖ´Â ´ë½Å¿¡, Áø´Ü ¸Þ¼¼Áö¸¦ stderr ¿¡ Ç¥½ÃÇØ, ( .Xr abort 3 (À»)¸¦ »ç¿ëÇØ) ÇÁ·Î±×·¥À» core ¿¡ ¶³¾î¶ß¸³´Ï´Ù. ÀÌ ¿É¼ÇÀº, ÄÄÆÄÀϽÿ¡, ¿ø½Ã Äڵ忡 ÀÌÇϸ¦ Â¥³Öµµ·Ï(µíÀÌ) ÇØ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. .Bd -literal -offset indent extern char *malloc_options; malloc_options = "X"; .Ed .Pp .It Z ÀÌ ¿É¼ÇÀ» ¼³Á¤Çϸé(ÀÚ), .Dq J ¿É¼Ç°ú .Dq R ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ¿ä±¸µÈ ¹ÙÀÌÆ®¿­¿¡ 0 ÀÌ Ãâ·ÂµË´Ï´Ù. À̰ÍÀº µð¹ö±×¿ëÀÇ ¿É¼ÇÀ¸·Î, ÆÛÆ÷¸Õ½ºÀÇ ÀúÇÏ¿¡ °­ÇÑ ¿µÇâÀ» ÁÝ´Ï´Ù. .It < ij½¬ »çÀÌÁ 2 ºÐÀÇ 1 À¸·Î ÇÕ´Ï´Ù. µðÆúÆ®ÀÇ Ä³½¬ »çÀÌÁî´Â 16 ÆäÀÌÁöÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¿©·¯ Â÷·Ê ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. .It > ij½¬ »çÀÌÁ 2 ¹è·Î ÇÕ´Ï´Ù. µðÆúÆ®ÀÇ Ä³½¬ »çÀÌÁî´Â 16 ÆäÀÌÁöÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¿©·¯ Â÷·Ê ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. .El .Pp .Dq J ¿É¼Ç°ú .Dq Z ¿É¼ÇÀº, Å×½ºÆ®¿Í µð¹ö±×¿ëÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¿É¼ÇÀ» »ç¿ëÇϰí ÀÖÀ» ¶§ µ¿ÀÛÀÌ ¹Ù²î´Â ¾îÇø®ÄÉÀ̼ǿ¡´Â °áÇÔÀÌ ÀÖ½À´Ï´Ù. .Sh »ç¿ë¿¹ ij½¬ »çÀÌÁ ½Ã½ºÅÛ Àüü·Î ÀÛ°Ô ÇØ, ¹®Á¦°¡ ¹ß»ýÇßÀ» °æ¿ì´Â Ç×»ó ÄÚ¾î´ýÇÁ¸¦ ÃëÇÏ´Â °Í °°Àº ¼³Á¤Àº, .Pp .Bd -literal -offset indent ln -s 'A<' /etc/malloc.conf .Ed .Pp ÇÁ·Î±×·¥ÀÌ ÀÌ·¯ÇÑ ÇÔ¼öÀÇ ¼Òȯ½Ã¿¡ ¹Ýȯ°ªÀ» üũÇÏÁö ¾Ê´Â °ÍÀ» ¼Ò½º·Î ¸í½ÃÇÏ·Á¸é , .Bd -literal -offset indent extern char *malloc_options; malloc_options = "X"; .Ed .Sh ȯ°æ º¯¼ö ÀÌÇÏÀÇ È¯°æ º¯¼ö´Â, ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼öÀÇ ½ÇÇà¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. .Bl -tag -width ".Ev MALLOC_OPTIONS" .It Ev MALLOC_OPTIONS ȯ°æ º¯¼ö .Ev MALLOC_OPTIONS (À»)¸¦ ¼³Á¤Çϸé(ÀÚ), ÀÌ È¯°æ º¯¼ö¿¡ Æ÷ÇԵǴ ij¸¯ÅÍ´Â, ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö±ºÀÇ Ç÷¡±×·Î¼­ ÇØ¼®µË´Ï´Ù. .El .Sh ¹Ýȯ°ª .Fn malloc ÇÔ¼ö¿Í .Fn calloc ÇÔ¼ö´Â, ¼º°øÇßÀ» °æ¿ì´Â ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸®¿¡ÀÇ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ¾î, ±× ÀÌ¿ÜÀÇ °æ¿ì´Â .Dv NULL Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ¾î .Va errno (À»)¸¦ .Er ENOMEM (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù. .Pp .Fn realloc ÇÔ¼ö¿Í .Fn reallocf ÇÔ¼ö´Â, ¼º°øÇßÀ» °æ¿ì´Â Ȥ½Ã .Fa ptr (¿Í)°ú µ¿ÀÏÇÑ, ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø ¸Þ¸ð¸®¿¡ÀÇ Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â .Dv NULL Æ÷ÀÎÅ͸¦ µ¹·ÁÁÝ´Ï´Ù. ±× °æ¿ì¿¡¼­µµ .Fa ptr ¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¸Þ¸ð¸®´Â ÀÌ¿ë °¡´ÉÇØ ±×´ë·Î ³²½À´Ï´Ù. ¸Þ¸ð¸®ÀÇ ÇÒ´çÇØ¿¡ ½ÇÆÐÇßÀ» °æ¿ì´Â, .Va errno (À»)¸¦ .Er ENOMEM (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù. .Pp .Fn free ÇÔ¼ö´Â °ªÀ» µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù. .Pp .Sh MALLOC ÀÇ ¹®Á¦ÀÇ µð¹ö±× ÀÌ ½ÇÀåÀº, ÇÒ´çÇÒ ¼ö ÀÖÁö ¾ÊÀº ÇÑ ÇØ¹æµÇ°í ÀÖ´Â ÆäÀÌÁö´Â ¾×¼¼½º µÇÁö ¾Ê°í, ÀçÀÌ¿ëÀ» À§Çؼ­(¶§¹®¿¡) Ä¿³Î¿¡ Àû±ØÀûÀ¸·Î µ¹·ÁÁÖ¾îÁø´Ù°í ÇÏ´Â Á¡ÀÌ, ¿Ü (ÀÇ ½Ã½ºÅÛ)ÀÇ ¸Þ¸ð¸® ÇÒ´çÀÇ ½ÇÀå°ú Å©°Ô ´Ù¸¨´Ï´Ù. .Bd -ragged -offset indent ´ëºÎºÐ (ÀÇ ½Ã½ºÅÛ)ÀÇ ¸Þ¸ð¸® ÇÒ´çÀÇ ½ÇÀå¿¡¼­´Â, ¸°Å©µå¸®½ºÆ®¸¦ Æ÷ÇÔÇÑ µ¥ÀÌÅÍ ±¸Á¶°¡, ÇØ¹æµÇ°í ÀÖ´Â ¸Þ¸ð¸®ÀÇ µ¢¾î¸®¾È¿¡ º¸Á¸µÇ¾î ÇØ¹æ ¶°³¯ ¼ö ÀÖ¾î ¸ðµç ¸Þ¸ð¸®¸¦ ¼­·Î °áÇÕÇϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. ÇØ¹æ ¸®½ºÆ®¸¦ ¿Õ·¡ÇÒ ¶§¸¶´Ù, ¹Ì»ç¿ëÀÇ, ÆäÀÌÁö ¾Æ¿ô µÇ°í ÀÖÀ» ÆäÀÌÁö°¡, ÇÁ¶óÀ̸¶¸®¸Þ¸ð¸®¿¡ µé¾î°¡±â À§Çؼ­(¶§¹®¿¡) ÆäÀÌÁö ÆúÆ®¸¦ ÀÏÀ¸Å°±â (À§ÇØ)¶§¹®¿¡, À̰ÍÀº ÃÖÀûÀÌ´Ù°í´Â ¸»ÇÒ ¼ö ¾ø½À´Ï´Ù. ÆäÀÌ¡À» ½Ç½ÃÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â, 1 °³ÀÇ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ »ý±â´Â ÆäÀÌÁö ÆúÆ®ÀÇ ¼ö°¡ 5 ¹è¿¡ Áõ°¡ÇÏ´Â °á°ú°¡ µÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. .Ed .Pp ÀÌ ¾ÆÅ°ÅØÃÄ¿¡´Â, Áö±Ý±îÁö´Â °ËÃâµÇÁö ¾Ê¾Ò´ø ÀÎÅÍÆäÀ̽ºÀÇ ¼¼µé·Î ÇÑ À§¹ÝÀÌ, ½ÇÁ¦·Î °ËÃâµÇ°Ô µÈ´Ù°í ÇÏ´Â ºÎÀÛ¿ëÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¶§¹®¿¡, ÈξÀ ¹®Á¦ ¾ø°Ô ¿òÁ÷À̰í ÀÖ´ø ÇÁ·Î±×·¥ÀÌ, ÀÌ ÇÒ´çÀÇ ½ÇÀå°ú ¸µÅ© ÇÏÀÚ ¸¶ÀÚ ¹®Á¦°¡ ¼ÓÃâÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. .Pp ÃÖÃÊ·Î ÇØ¾ß ÇÒ ÀÏ, ±×¸®°í °¡Àå Áß¿äÇÑ (ÀÏ)°ÍÀº .Dq A ¿É¼ÇÀ» ¼³Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀ» ¼³Á¤Çϸé(ÀÚ), °¡´ÉÇÑ ÇÑ Ã³¸®¸¦ °è¼ÓÇÏ·Á°í ÇÏ´Â Åë»óÀÇ ¹æÄ§À» ÃëÇÏ´Â ´ë½Å¿¡, ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§¿¡ (°¡´ÉÇϸé) ÄÚ¾î´ýÇÁ¸¦ °­Á¦ÀûÀ¸·Î ÃëÇÕ´Ï´Ù. .Pp µð¹ö°ÅÀÇ ¼­Æ÷Æ®¸¦ À§Çؼ­(¶§¹®¿¡), ÀûÀýÇÑ ¿É¼Ç°ú ½Éº¼·Î ÇÁ·Î±×·¥À» ÀçÄÄÆÄÀÏ ÇÏ´Â °ÍÀÌ ¾Æ¸¶ Çö¸íÇÕ´Ï´Ù. .Pp ÇÁ·Î±×·¥ÀÌ, Åë»ó°ú´Â ´Ù¸¥ °á°ú¸¦ ³»°Å³ª ÄÚ¾î´ýÇÁ Çϰųª ´ÙÀ½ÀÇ ¼½¼ÇÀ¸·Î µå´Â °Í °°Àº ¸Þ¼¼Áö¸¦ º¸³»Áö ¾Ê°í ´Ù¸¥ µ¿ÀÛÀ»Çϱ⠽ÃÀÛÇÏ´Â °Í °°Àº °æ¿ì´Â, ÇÁ·Î±×·¥ÀÌ 0 ÀÇ ¹ÙÀÌÆ®·Î ä¿öÁö°í ÀÖ´Â ±â¾ï area¿¡ ÀÇÁ¸Çϰí ÀÖ´Â °æ¿ì¶ó¸é »ý°¢µË´Ï´Ù. .Dq Z ¿É¼ÇÀ» ¼³Á¤ÇØ ½ÇÇàÇØ º¸¼¼¿ä. »óȲÀÌ È£ÀüµÇ¾úÀ» °æ¿ì´Â, ÀÌ Áø´ÜÀÌ ¿Ã¹ß¶ú´ø °ÍÀÌ µË´Ï´Ù. À̰ÍÀÌ¶óµµ ÇÁ·Î±×·¥ÀÌ ÀÌ»óÇÑ µ¿ÀÛÀ» ÇÏ´Â °Í °°À¸¸é, ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø area ÀÌ¿ÜÀÇ ¸Þ¸ð¸®, ´ëü·Î´Â ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø areaÀÇ Àü¹æÀº ¾Æ´Ï°í ÈĹ濡 ¾×¼¼½º ÇÑ´Ù°í ÇÏ´Â ¹®Á¦¶ó¸é »ý°¢µË´Ï´Ù. .Pp ȤÀº, Áõ»óÀÌ ¿ëÀÌÇÏ°Ô ÀçÇöÇÏÁö ¾Ê´Â °æ¿ì´Â, .Dq J ¿É¼ÇÀ» ¼³Á¤Çϸé(ÀÚ) ¹®Á¦¸¦ ÀÏÀ¸Å°´Â µµ¿òÀÌ µÉÁöµµ ¸ð¸¨´Ï´Ù. .Pp Á¤¸»·Î ¾î·Á¿î »óȲ¿¡¼­´Â, Ä¿³Î·Î .Dq U ¿É¼ÇÀÌ ¼­Æ÷Æ®µÇ°í ÀÖ´Â °æ¿ì´Â ±×°ÍÀ» ¼³Á¤Çϸé(ÀÚ), ÀÌ·¯ÇÑ ÇÔ¼öÀÇ ¸ðµç ¼ÒȯÀÇ »ó¼¼ÇÑ Æ®·¹À̽º°¡ ÀÛ¼ºµË´Ï´Ù. .Pp °ø±³·Ó°Ôµµ, ÀÌ ½ÇÀå¿¡¼­´Â, °ËÃâµÈ ¹®Á¦¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀº Á¦°øµÇÁö ¾Ê½À´Ï´Ù. ±×·¯ÇÑ Á¤º¸¸¦ º¸Á¸ÇÏ´Â °ÍÀ¸·Î, ÆÛÆ÷¸Õ½º°¡ ¾Ç¿µÇâÀ» ¹Þ±â (À§ÇØ)¶§¹®ÀÔ´Ï´Ù. ÆÛÆ÷¸Õ½º¿Í ±³È¯¿¡ ÇÑÃþ ´õÀÇ °ÇÀüÇÔÀÇ Ã¼Å©¿Í »ó¼¼ÇÑ Áø´ÜÀ» ½Ç½ÃÇØ, ¹®Á¦ÀÇ °ËÃâ°ú À§Ä¡ÀÇ Æ¯Á¤¿¡ ÃÊÁ¡À» ¸ÂÈù ¼ö¸¹Àº ¸Þ¸ð¸® ÇÒ´çÀÇ ½ÇÀåÀÌ, ÀÎÅͳÝÀ¸·Î ÀÌ¿ë °¡´ÉÇÕ´Ï´Ù. .Sh Áø´Ü ¸Þ¼¼Áö .Fn malloc , .Fn calloc , .Fn realloc , .Fn free ÇÏÁö¸¸ ¿¡·¯³ª °æ°í¸¦ °ËÃâÇϸé(ÀÚ), ¸Þ¼¼Áö°¡ ÆÄÀÏ ±â¼úÀÚ STDERR_FILENO ¿¡ Ãâ·ÂµË´Ï´Ù. ¿¡·¯ÀÇ °æ¿ì, ÇÁ·Î¼¼½º´Â ÄÚ¾î´ýÇÁ ÇÕ´Ï´Ù. .Dq A ¿É¼ÇÀ» ¼³Á¤Çϸé(ÀÚ), ¸ðµç °æ°í´Â ¿¡·¯·Î¼­ ´Ù·ç¾îÁý´Ï´Ù. .Pp ÀÌÇÏ¿¡¼­´Â, Ãâ·ÂµÉ °¡´É¼ºÀÌ ÀÖ´Â ¿¡·¯ ¸Þ¼¼Áö¿Í ±× Àǹ̿¡ ´ëÇØ °£´ÜÇÏ°Ô ¼³¸íÇÕ´Ï´Ù. .Bl -diag .It "(ES): mumble mumble mumble" .Dq EXTRA_SANITY ÇÏÁö¸¸ Á¤ÀÇµÈ »óÅ·Π¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö°¡ ÄÄÆÄÀÏ µÇ°í ÀÖ¾î »ó¼¼ÇÑ ¿¡·¯ üũÁß¿¡ ¿¡·¯°¡ °ËÃâµÇ¾ú½À´Ï´Ù. »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, ¿ø½Ã Äڵ带 ÂüÁ¶ÇØ ÁÖ¼¼¿ä. .It "mmap(2) failed, check limits" ½Ã½ºÅÛÀÌ À§ÇèÇÑ °úºÎÇÏÀÎ »óÅÂÀÎÁö, ÇÁ·Î¼¼½ºÀÇ Á¦ÇÑÀÌ ¿Ã¹Ù¸£°í ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù°í »ý°¢µË´Ï´Ù. .It "freelist is destroyed" ³»ºÎÀÇ ÇØ¹æ ¸®½ºÆ®°¡ ¸Á°¡Á® ÀÖ½À´Ï´Ù. .It "out of memory" .Dq X ¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖ¾î, ÇÑÆí, ¸Þ¸ð¸®ÀÇ ÇÒ´çÇØ¿¡ ½ÇÆÐÇß½À´Ï´Ù. .El .Pp ÀÌÇÏ¿¡¼­´Â, Ãâ·ÂµÉ °¡´É¼ºÀÌ ÀÖ´Â °æ°í ¸Þ¼¼Áö¿Í ±× Àǹ̿¡ ´ëÇØ °£´ÜÇÏ°Ô ¼³¸íÇÕ´Ï´Ù. .Bl -diag .It "chunk/page is already free" ¹ú½á ÇØ¹æµÇ°í ÀÖ´Â ¸Þ¸ð¸®¸¦ .Fn free ±×¸®°í ÇØ¹æÇÏ·Á°í Çß½À´Ï´Ù. .It "junk pointer, ..." ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö¿¡°Ô ÁÙ ¼ö ÀÖ¾ú´ø Æ÷ÀÎÅͰ¡, Àνĵǰí ÀÖ´Â ¸Þ¸ð¸® °æ°èÀÇ ¿ÜÃøÀ» °¡¸®Å°°í ÀÖ½À´Ï´Ù. .It "malloc() has never been called" ¸Þ¸ð¸®°¡ ÇÒ´çÇØÁöÁö ¾ÊÀº¿¡µµ ºÒ±¸Çϰí, ÇØ¹æÇÏ·Á°í Çϰųª ÀçÇÒÀÎ ¸ÂÈ÷°í ÇÏ·Á°í Çß½À´Ï´Ù. .It "modified (chunk-/page-) pointer" .Fn free Àΰ¡ .Fn realloc ¿¡°Ô °Ç³×Áø Æ÷ÀÎÅ͸¦ °íÃÄ ¾µ ¼ö ÀÖ°í ÀÖ½À´Ï´Ù. .It "pointer to wrong page" .Fn realloc , .Fn free ȤÀº .Fn reallocf ÇÏÁö¸¸ ÇØ¹æÇÏ·Á°í Çϰí ÀÖ´Â Æ÷ÀÎÅͰ¡, ¿Ã¹Ù¸¥ ÆäÀÌÁö¸¦ ÂüÁ¶Çϰí ÀÖÁö ¾Ê½À´Ï´Ù. .It "recursive call" ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö¸¦ Àç±ÍÀûÀ¸·Î È£ÃâÇÏ·Á°í Çß½À´Ï´Ù. À̰ÍÀº Çã°¡µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. ƯÈ÷ ½Ã±×³Î Çڵ鷯¿¡¼­´Â, ¸Þ¸ð¸®ÀÇ ÇÒ´çÀ» ÇØ¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. .It "unknown char in MALLOC_OPTIONS" ºÒ¸íÇÑ ¿É¼ÇÀÌ ÁöÁ¤µÇ¾ú½À´Ï´Ù. .Dq A ¿É¼ÇÀ» ¼³Á¤ÇØ À־, ÀÌ °æ°í´Â ´Ü¼øÇÑ °æ°í·Î¼­ ´Ù·ç¾îÁý´Ï´Ù. .El .Sh °ü·Ã Ç׸ñ .Xr brk 2 , .Xr mmap 2 , .Xr alloca 3 , .Xr getpagesize 3 , .Xr memory 3 .Pa /usr/share/doc/papers/malloc.ascii.gz .Sh Ç¥ÁØ .Fn malloc , .Fn calloc , .Fn realloc , .Fn free ÇÔ¼ö´Â .St -isoC ¿¡ ÀûÇÕÇϰí ÀÖ½À´Ï´Ù. .Sh ¿ª»ç ÇöÀçÀÇ ¸Þ¸ð¸® ÇÒ´çÀÇ ½ÇÀåÀº, °³º°ÀÇ °Ô¸£¸¶´½ Æ®·£Áö½ºÅÍ·Î ÀÛ¼ºµÈ, 20 ºñÆ® ¹ÙÀ̳ʸ® ÄÄÇ»ÅÍ¿¡ ÀåÂøµÈ µå·³ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î¼­ ½ºÅ¸Æ® Çß½À´Ï´Ù. ±× ÀÌÈÄ´Â, 2Â÷ º¸Á¸¿ªÀÌ ¾Æ´Ï°í, ÀÏÂ÷ º¸Á¸¿ªÀ» Á¶ÀÛÇÏ°Ô µÇ¾ú½À´Ï´Ù. ÀÌ »õ·Î¿î ÇüÅÂ¿Í ±â´ÉÀº .Fx 2.2 ±×¸®°í óÀ½ µîÀåÇß½À´Ï´Ù. .Pp .Xr reallocf 3 ÇÔ¼ö´Â .Fx 3.0 ±×¸®°í óÀ½ µîÀåÇß½À´Ï´Ù. .Sh ÀúÀÚ .An Poul-Henning Kamp Aq phk@FreeBSD.org .Sh ¹ö±× ¹®Á¦°¡ ¹ß»ýÇßÀ» °æ¿ì¿¡ Ãâ·ÂµÇ´Â ¸Þ¼¼Áö´Â, ½ÇÁ¦ÀÇ °ª¿¡ ´ëÇÑ »ó¼¼¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. .Pp 0 ¹ÙÀÌÆ®¸¦ ÇÒ´çÇϵµ·Ï(µíÀÌ) ¿ä±¸µÇ¾úÀ» °æ¿ì¿¡ .Dv NULL Æ÷ÀÎÅ͸¦ µ¹·ÁÁÖ´Â °ÍÀº, ¾î¸®¼®Àº Áú¹®¿¡ ´ëÇÑ ¾î¸®¼®Àº ¹ÝÀÀÀÌ´Ù°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.