MALLOC

Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (3)
Updated: 1993³â 4¿ù 4ÀÏ
Index
Return to Main Contents
 

À̸§

calloc, malloc, free, realloc - µ¿Àû ¸Þ¸ð¸® ÇÒ´ç ¹× ÇØÁ¦  

»ç¿ë¹ý

#include <stdlib.h>

void *calloc(size_t nmemb, size_t size);
void *malloc(size_t size);
void free(void *ptr);
void *realloc(void *ptr, size_t size);
 

¼³¸í

calloc() ÇÔ¼ö´Â ¿ø¼ÒÀÇ Å©±â°¡ size ¹ÙÀÌÆ®ÀÎ nmemb °³ÀÇ ¿ø¼Ò·Î ÀÌ·ç¾îÁø ¹è¿­À» À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¹ÝȯÇÑ´Ù. ¸Þ¸ð¸®¸¦ 0 À¸·Î ¼³Á¤µÈ´Ù.

malloc() ÇÔ¼ö´Â size ¹ÙÀÌÆ®¸¦ ÇÒ´çÇÏ°í ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ÇÒ´çÇÑ´Ù. ¸Þ¸ð¸®¸¦ Ŭ¸®¾îÇÏÁö ¾Ê´Â´Ù.

free() ´Â malloc(), calloc() ¶Ç´Â realloc()¿¡ ´ëÇÑ È£Ãâ½Ã ¹ÝȯµÇ´Â ptrÀÌ °¡¸®Å°´Â ¸Þ¸ð¸® °ø°£À» ÇØÁ¦ÇÑ´Ù. ±×·¸Áö ¾Ê°í, ¸¸ÀÏ free(ptr) °¡ Àü¿¡ ÀÌ¹Ì È£ÃâµÇ¾ú´Ù¸é, Á¤ÀǵÇÁö ¾ÊÀº ÇൿÀÌ ÀϾ´Ù. ¸¸ÀÏ ptr ÀÌ NULLÀ̶ó¸é, ¾î¶² ÀÛµ¿µµ ÇàÇØÁöÁö ¾Ê´Â´Ù.

realloc() ÇÔ¼ö´Â ptr ÀÌ °¡¸®Å°´Â ¸Þ¸ð¸® ºí·°ÀÇ Å©±â¸¦ size ¹ÙÀÌÆ®·Î ¹Ù²Û´Ù. ³»¿ëÀº ¿¹ÀüÀÇ ÃÖ¼Ò Å©±â¿¡¼­ »õ Å©±â·Î ¹Ù²îÁö ¾Ê´Â´Ù. »õ·Ó°Ô ÇÒ´çµÈ ¸Þ¸ð¸®´Â ÃʱâÈ­µÇÁö ¾Ê´Â´Ù. ¸¸ÀÏ ptr ÀÌ NULLÀ̶ó¸é, È£ÃâÀº malloc(size)°ú µ¿ÀÏÇÏ´Ù; ¸¸ÀÏ Å©±â°¡ 0 À̶ó¸é, È£ÃâÀº free(ptr) ¿Í µ¿ÀÏÇÏ´Ù. ¸¸¾à ptr ÀÌ NULLÀÌ ¾Æ´Ï¶ó¸é, ÀÌ ÇÔ¼ö´Â malloc(), calloc() À̳ª realloc()¿¡ ´ëÇÑ Ãʱâ È£Ãâ½Ã ¹ÝȯµÇ¾î¾ß ÇÑ´Ù.  

¹Ýȯ°ª

calloc() ±×¸®°í malloc()ÇÔ¼ö ¿¡¼­, ¹Ýȯ °ªÀº ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ °¡¸®Å°¸ç, ÀÌ°ÍÀº ¾î¶² Á¾·ùÀÇ º¯¼ö¸¦ À§ÇØ Àû´çÈ÷ Á¤·ÄµÈ´Ù. ¸¸ÀÏ ¿ä±¸°¡ ½ÇÆÐÇϸé, NULL ÀÌ ¹ÝȯµÈ´Ù.

free() ´Â ¾î¶² °ªµµ ¹ÝȯÇÏÁö ¾Ê´Â´Ù.

realloc() Àº »õ·Î ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¹ÝȯÇϸç ÀÌ ¸Þ¸ð¸®´Â ¾î¶² Á¾·ùÀÇ º¯¼ö¸¦ À§ÇØ Àû´çÈ÷ Á¤·ÄµÇ¸ç ptr°ú´Â ´Ù¸¦ °ÍÀÌ´Ù. ±×·¸Áö ¾Ê°í, ¸¸ÀÏ ¿ä±¸°¡ ½ÇÆÐÇϰųª Å©±â°¡ 0 À̶ó¸é NULL À» ¹ÝȯÇÑ´Ù. ¸¸ÀÏ realloc() ÀÌ ½ÇÆÐÇÑ´Ù¸é ¿ø·¡ ºí·°Àº °Çµå¸®Áö ¾Ê°í ³²¾ÆÀÖ´Ù -- ÇØÁ¦µÇ°Å³ª À̵¿µÇÁö ¾Ê´Â´Ù.  

ȣȯ

ANSI-C  

°ü·Ã Ç׸ñ

brk(2)  

ÁÖÀÇ

Unix98 Ç¥ÁØÀº ½ÇÆнà errno ¸¦ ENOMEMÀ¸·Î ¼³Á¤Çϵµ·Ï malloc(), calloc(), ±×¸®°í realloc() À» ¿ä±¸ÇÑ´Ù. Glibc´Â ÀÌ·¸°Ô ¼³Á¤µÈ °ÍÀ¸·Î »ý°¢µÈ´Ù(±×¸®°í ÀÌ ·çƾµéÀÇ glibc ¹öÀüÀº ÀÌ°ÍÀ» ÇÑ´Ù); ¸¸ÀÏ ¿©·¯ºÐÀÌ errno¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â °³ÀÎÀûÀÎ malloc ¼öÇàÀ» »ç¿ëÇÑ´Ù¸é, ¶óÀ̺귯¸® ·çƾµéÀº errno¸¦ °¡Áö´Â°Í ¾øÀÌ ÀÌÀ¯¾øÀÌ ½ÇÆÐÇÒ °ÍÀÌ´Ù.

malloc(), free() ¶Ç´Â realloc() ÇÔ¼ö¿¡¼­ Å©·¡½¬´Â ÇÒ´çµÈ ¿µ¿ªÀÇ ¿À¹ö Ç÷ο쳪 °°Àº Æ÷ÀÎÅ͸¦ µÎ¹ø ÇØÁ¦ Çϴ°Ͱú °°Àº Èü ¿À¿°°ú Ç×»ó °ü·ÃÀÌ ÀÖ´Ù.

Linux libc (5.4.23 ÀÌÈÄ)ÀÇ ÃÖ±Ù ¹öÀü°ú GNU libc (2.x) ¹öÀüÀº ȯ°æ º¯¼ö¸¦ ÅëÇØ Á¶Á¤ÇÒ¼ö ÀÖ´Â malloc ¼öÇàÀ» Æ÷ÇÔÇÑ´Ù. MALLOC_CHECK_ ÀÌ ¼³Á¤µÇ¾ú´Ù¸é, Ưº°ÇÑ(´ú È¿À²ÀûÀÌÁö¸¸) ÇൿÀÌ ÇàÇØÁö¸ç, ÀÌ°ÍÀº °°Àº ÀÎÀÚ¸¦ °¡Áö°í free() ¸¦ µÎ¹ø È£ÃâÇϰųª ´ÜÀÏ ¹ÙÀÌÆ®(off-by-one ¹ö±×)ÀÇ ÃÊ°ú °°Àº °£´ÜÇÑ ¿¡·¯¿¡ ´ëÇÑ ¾ÈÀüÀ» À§ÇØ µðÀÚÀεǾú´Ù. ±×·¯³ª ±×·± ¿¡·¯µéÀº Ç×»ó º¸È£µÇÁö´Â ¾ÊÀ¸¸ç ¸Þ¸ð¸® ¸¯ÀÌ »ý±æ¼ö ÀÖ´Ù. ¸¸ÀÏ MALLOC_CHECK_ À» 0 À¸·Î ¼³Á¤Çϸé, ¹ß°ßµÈ Èü ¿À¿°Àº ¹«½ÃµÈ´Ù; ¸¸ÀÏ 1 ·Î ¼³Á¤Çϸé, Áø´ÜÀº stderr·Î Ãâ·ÂµÈ´Ù; ¸¸ÀÏ 2 ·Î ¼³Á¤Çϸé, abort() °¡ Áï½Ã È£ÃâµÈ´Ù. ÀÌ°ÍÀº À¯¿ëÇÏ´Ù. ¿Ö³ÄÇϸé Å©·¡½¬°¡ ³ªÁß¿¡ »ý±æ°ÍÀÌ°í ¹®Á¦ÀÇ ¿øÀÎÀ» ã¾Æ°¡´Â°ÍÀÌ ¸Å¿ì ¾î·Á¿öÁö±â ¶§¹®ÀÌ´Ù.  

¿ªÀÚ

Á¤°­ÈÆ <skyeyes@soback.kornet.net>, 2001³â 3¿ù 11ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
¹Ýȯ°ª
ȣȯ
°ü·Ã Ç׸ñ
ÁÖÀÇ
¿ªÀÚ

This document was created by man2html, using the manual pages.
Time: 08:07:01 GMT, March 25, 2004