malloc(3)
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>malloc(3)



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼­
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<chapter lang=ko> 
<!-- ÀÛ¼ºÀÚ : yundream             --> 
<!-- ÀÛ¼ºÀÏ : 2004/02/04           --> 
<!-- ¿¬¶ôó : yundream@joinc.co.kr --> 
 
<!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> 
<title>malloc(2)</title> 
 
<!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> 
<para> 
    µ¿Àû ¸Þ¸ð¸® ÇÒ´ç ¹× ÇØÁ¦ 
</para> 
  
<!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>»ç¿ë¹ý</title> 
    <para> 
        <screen> 
#include <stdlib.h> 
 
int malloc(size_t size); 
int calloc(size_t size); 
int free(void *ptr);  
void *realloc(void *ptr, size_t size); 
        </screen> 
    </para> 
</section> 
 
<!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>¼³¸í</title> 
    <para> 
        malloc() ´Â size Å©±â¸¸Å­ÀÇ ¸Þ¸ð¸®¸¦ (µ¿ÀûÀ¸·Î)ÇÒ´çÇϱâ À§Çؼ­  
        »ç¿ëÇÑ´Ù. malloc()Àº È£Ãâ¿¡ ¼º°øÇÑµÚ ÇÒ´çµÈ ¸Þ¸ð¸®¿µ¿ªÀ» °¡¸£Å°´Â  
        Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. malloc()À» ÀÌ¿ëÇØ¼­ ÇÒ´çµÈ ¸Þ¸ð¸® ¿µ¿ªÀº ÀÚµ¿À¸·Î  
        clear µÇÁö ¾Ê´Â´Ù. ´õÀÌ»ó »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¸ð¸®¿µ¿ªÀº ¹Ýµå½Ã  
        free() ¸¦ ÀÌ¿ëÇØ¼­ clear ÇØÁÖµµ·ÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ»°æ¿ì ¸Þ¸ð¸® 
        ´©¼ö°¡ ÀϾ¼ö ÀÖ´Ù. 
    </para> 
    <para> 
        calloc()´Â <emphasis>size</emphasis>Å©±â¸¦ °¡Áö´Â  
        <emphasis>nmemb</emphasis>¿ä¼Ò ¸¸Å­ÀÇ °ø°£À» ÇÒ´çÇÑ´Ù. ¸Þ¸ð¸®´Â  
        0À¸·Î ¼³Á¤µÈ´Ù.  
    </para> 
    <para> 
        realloc()´Â <emphasis>ptr</emphasis>°¡ °¡¸£Å°´Â ¸Þ¸ð¸®¿µ¿ªÀÇ Å©±â¸¦  
        <emphasis>size</emphasis>¸¸Å­ Á¶ÀýÇÑ´Ù. ¸Þ¸ð¸® ¿µ¿ª¿¡ ÀÖ´ø µ¥ÀÌÅÍ´Â  
        ±×´ë·Î ³²¾Æ ÀÖ°Ô µÈ´Ù. ¸¸¾à <emphasis>ptr</emphasis>°¡  
        <emphasis>NULL</emphasis>À» °¡¸®Å°°í ÀÖ¾ú´Ù¸é malloc(size)¿Í µ¿ÀÏÇÑ  
        ¼öÇàÀ» º¸¿©ÁØ´Ù. <emphasis>size</emphasis>°¡ 0À̶ó¸é free(ptr)°ú  
        µ¿ÀÏÇÑ ¼öÇàÀ» º¸¿©ÁØ´Ù. 
    </para> 
    <para> 
        free()´Â <emphasis>ptr</emphasis>°¡ °¡¸£Å°´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ÇØÁ¦ÇÑ´Ù.  
        malloc(), calloc(), realloc()¸¦ »ç¿ëÇÑ ¸Þ¸ð¸®¿µ¿ªÀ» ´õÀÌ»ó »ç¿ëÇÏÁö  
        ¾Ê´Â´Ù¸é free()¸¦ È£ÃâÇØ¼­ ÀÚ¿øÀÇ ³¶ºñ¸¦ ¸·µµ·Ï ÇÑ´Ù.  
        <emphasis>ptr</emphasis>°¡ <emphasis>NULL</emphasis>À̶ó¸é ¾Æ¹«·±  
        Àϵµ ¼öÇàÇÏÁö ¾ÊÀº °æ¿ì°¡ µÈ´Ù.  
    </para> 
</section> 
 
<!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> 
<section> 
    <title>¹Ýȯ°ª</title> 
    <para> 
        calloc(), malloc()´Â ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.  
        ½ÇÆÐÇß´Ù¸é <emphasis>NULL</emphasis>À» ¸®ÅÏÇÑ´Ù.  
    </para> 
    <para> 
        free()´Â °ªÀ» ¸®ÅÏÇÏÁö ¾Ê´Â´Ù. 
    </para> 
    <para> 
        realloc()´Â »õ·ÎÇÒ´çµÈ ¸Þ¸ð¸®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.  
        ½ÇÆÐÇÒ °æ¿ì <emphasis>NULL</emphasis>À» ¸®ÅÏÇÑ´Ù.  
        realloc()°¡ ½ÇÆÐÇÏ´õ¶óµµ ÀÌÀü ¸Þ¸ð¸®°¡ ÇØÁ¦µÇ°Å³ª À̵¿ÇÏ´Â ÀÏÀº  
        ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ¸¸¾à realloc()¿äûÇÑ ¸Þ¸ð¸®ÀÇ Å©±â°¡ ÃæºÐÈ÷ Ä¿¼­  
        ÀÌÀü Æ÷ÀÎÅÍ ¿µ¿ª¿¡¼­ ¿¬¼ÓµÈ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÒ ¼ö ¾ø°Ô µÈ´Ù¸é  
        °ø°£È®º¸°¡ °¡´ÉÇÑ ´Ù¸¥ ¿µ¿ªÀ¸·Î º¹»çµÈ´Ù.     
    </para> 
</section> 
 
<!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> 
 
<!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù                                                 --> 
<!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> 
<!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ­ ¿Ã·ÁÁּŵµ µË´Ï´Ù                               -->  
<!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê   --> 
<!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼­ ¿Ã¸®°Ú½À´Ï´Ù                               --> 
<!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä                            --> 
<section> 
    <title>¿¹Á¦</title> 
    <para> 
        <screen> 
#include <string.h> 
#include <stdlib.h> 
 
struct name 
{ 
    int     age; 
    char    name[25]; 
}; 
int main() 
{            
    char *org_name; 
    struct name *myname; 
    int i; 
                        
    // org_name ¿¡ char ÀÌ 25¸¸Å­ µé¾î°¥¼ö ÀÖ´Â 
    // ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÑ´Ù.                                                 
    // malloc ´Â ÇÒ´çµÈ ¸Þ¸ð¸® ¿µ¿ªÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇØÁֹǷΠ
    // org_name Àº malloc ¸¦ ÀÌ¿ëÇØ ÇÒ´çµÈ ¿µ¿ªÀÇ Æ÷ÀÎÅ͸¦ °¡¸£Å°°Ô µÈ´Ù. 
    org_name = (char *)malloc(sizeof(char)*25); 
                                                                                
    // myname ¿ª½Ã ¸¶Âù°¡Áö·Î struct name ÀÌ 2°³ ¸¸Å­ µé¾î°¥¼ö 
    // ÀÖ´Â ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÑ´Ù. 
    myname = (struct name *)malloc(sizeof(myname)*2);                          
 
    strcpy(org_name, "yundream"); 
                                                                               
    myname[0].age = 25; 
    strcpy(myname[0].name, org_name); 
 
                                                                                
    strcpy(org_name, "testname");                                              
    myname[1].age = 28;                                                        
    strcpy(myname[1].name, org_name);                                           
                      
    for(i = 0; i < 2; i++) 
    {                            
        printf("%d : %s\n", myname[i].age, myname[i].name); 
    }                                                                          
} 
        </screen> 
    </para> 
    <para> 
        À§ÀÇ Äڵ带 º¸¸é org_name ¶ó´Â char Çü Æ÷ÀÎÅͰ¡ ¼±¾ðµÇ¾î ÀÖ´Ù.  
        óÀ½ ¼±¾î½Ã¿¡ ÀÌ Æ÷ÀÎÅÍ´Â ¾Æ¹«°Íµµ °¡¸£Å°Áö ¾Ê°í ÀÖÀ½À¸·Î, ÀÌ  
        Æ÷ÀÎÅ͸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÇϰí ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦  
        °¡¸£Å°µµ·Ï ¸¸µé¾î Áà¾ß ÇÑ´Ù. 
    </para> 
    <para> 
        <screen> 
 malloc »ç¿ëÀü 
               
 +-- 4byte -+  
               
 +----------+  
 | org_name |  
 +----------+          ? 
     |                 | 
     +-----------------+ 
                         
 malloc »ç¿ëÈÄ           
                      +- 25 byte -+ 
                                    
 +----------+         +------------+ 
 | org_name |         |MEMORY      | 
 +----------+         +------------+ 
     |                 |             
     +-----------------+             
        </screen> 
    </para> 
</section> 
 
<section> 
    <title>Âü°í¹®Çå</title>     
    <para> 
        <orderedlist> 
            <listitem> 
                <para> 
                    <ulink url="http://www.joinc.co.kr/modules.php?name=News&file=article&sid=89">µ¿Àû¸Þ¸ð¸® ÇÒ´ç</ulink> 
                </para> 
            </listitem> 
        </orderedlist> 
    </para> 
</section> 
</chapter> 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.