¤³¤Î¾Ï¤ÎÌܼ¡¤Ë¤â¤É¤ë
Á°ÊÇ:1.4 ¥°¥í¡¼¥Ð¥ë̾´ÉÍý¤Ë¤â¤É¤ë
¼¡ÊÇ:1.6 ¥Õ¥¡¥¤¥ë´ÉÍý¤Ë¤¹¤¹¤à


1.5 ¥á¥â¥ê´ÉÍý

1.5.1 ¥á¥â¥ê´ÉÍýµ¡Ç½¤Î³µÍ×

¥Ç¡¼¥¿¥á¥â¥êÎΰè¤Ë¤Ï°Ê²¼¤Ë¼¨¤¹ 3 ¼ïÎब¤¢¤ê¡¢ ¤½¤ì¤¾¤ì¤ÎÎΰè¤ËÂФ·¤Æ»ØÄꤷ¤¿Â礭¤µ¤Î¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î³ÍÆÀ / ²òÊüÅù¤Îµ¡Ç½¤òÄ󶡤·¤Æ¤¤¤ë¡£

¥í¡¼¥«¥ë¥á¥â¥êÎΰè :

1 ¤Ä¤Î¥×¥í¥»¥¹Æâ¤Ç¤Î¤ß»ÈÍѲÄǽ¤Ê¥á¥â¥êÎΰè¤Ç¤¢¤ê¡¢ ¾¤Î¥×¥í¥»¥¹¤«¤é¤Ï¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
¥í¡¼¥«¥ë¥á¥â¥ê¤È¤·¤Æ³ÎÊݤ·¤¿Îΰè¤Ï¡¢ ¥×¥í¥»¥¹½ªÎ»»þ¤Ë¼«Æ°Åª¤Ë²òÊü¤µ¤ì¤ë¡£

¶¦Í­¥á¥â¥êÎΰè :

¤¹¤Ù¤Æ¤Î¥×¥í¥»¥¹¤«¤é»ÈÍѲÄǽ¤Ê¥á¥â¥êÎΰè¤Ç¤¢¤ë¡£
³ÍÆÀ¤·¤¿¥×¥í¥»¥¹¤Î¸ºß¤È¤Ï̵´Ø·¸¤Ë¸ºß¤¹¤ë¤¬¡¢ ³ÍÆÀ¤·¤¿¥×¥í¥»¥¹¤Î½ªÎ»»þ¤Ë¼«Æ°Åª¤Ë²òÊü¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£

¥·¥¹¥Æ¥à¥á¥â¥êÎΰè :

¥·¥¹¥Æ¥à ( OS ¤ä¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥Ð¡¼Åù ) ¤«¤é¤Î¤ß»ÈÍѲÄǽ¤Ê¥á¥â¥êÎΰè¤Ç¤¢¤ë¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£
¥×¥í¥»¥¹¤È¤Ï̵´Ø·¸¤Ë¸ºß¤¹¤ë¡£

´ðËÜŪ¤Ë¤Ï¥Ö¥í¥Ã¥¯Ã±°Ì ( Î㤨¤Ð 4KB ñ°Ì ) ¤Ç¥á¥â¥ê¤ò³ä¤êÅö¤Æ¤ëµ¡Ç½¤Î¤ß¤ò OS ¤ÏÄ󶡤¹¤ë¡£ ¤µ¤é¤ËºÙ¤«¤¯ÆâÉô¤òʬ³ä¤¹¤ë¤Î¤Ï¥é¥¤¥Ö¥é¥ê¡¢ ¤Þ¤¿¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¼«¿È¤Ç¹Ô¤¦¡£ Ä̾ï¤Ï¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤òľÀÜ»ÈÍѤ»¤º¤Ë¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¡£ ¥é¥¤¥Ö¥é¥ê¤Îµ¡Ç½¤Ç¤ÏÉÔ½½Ê¬¤Ê¾ì¹ç¤Î¤ß¥·¥¹¥Æ¥à¥³¡¼¥ë¤òľÀÜÍøÍѤ¹¤ë¡£

³ÍÆÀ¤·¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ÏϢ³¤·¤¿ ( ÏÀÍý ) ¥¢¥É¥ì¥¹¤ò»ý¤Á¡¢ ¤½¤ÎÀèÆ¬ ( ÏÀÍý ) ¥¢¥É¥ì¥¹¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÌᤵ¤ì¤ë¡£ °ìÅÙ³ÍÆÀ¤·¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î ( ÏÀÍý ) ¥¢¥É¥ì¥¹¤ÏÊѹ¹¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¤¿¤á¡¢ ÆÀ¤é¤ì¤¿¥¢¥É¥ì¥¹¤Ë¤è¤êľÀÜ¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ³ÍÆÀ¤·¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Ø¤Î¥Ç¡¼¥¿¤Î½ñ¹þ¤ß / ÆÉ¹þ¤ß¤Ï¼«Í³¤Ë¤Ç¤­¤ë¤¬¡¢ ¸¶Â§¤È¤·¤Æ¼Â¹Ô¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£

¥á¥â¥ê´ÉÍýµ¡Ç½¤Î¤¢¤ë CPU ¤Î¾ì¹ç¤Ë¤Ï¡¢ ¸¶Â§¤È¤·¤Æ¡¢¶¦Í­¥á¥â¥ê¡¢¥·¥¹¥Æ¥à¥á¥â¥ê¤ÏÉé¤Î¥¢¥É¥ì¥¹¤È¤Ê¤ê¡¢ ¥í¡¼¥«¥ë¥á¥â¥ê¤ÏÀµ¤Î¥¢¥É¥ì¥¹¤È¤Ê¤ë¡£ CPU ¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¤Ï¤³¤Î¸¶Â§Ä̤ê¤Ë¤Ê¤é¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¡£ ¤Þ¤¿¡¢¥á¥â¥ê´ÉÍýµ¡Ç½¤Î¤Ê¤¤ CPU ¤Î¾ì¹ç¤Ï¡¢¤³¤Î¸Â¤ê¤Ç¤Ï¤Ê¤¤¡£

¥á¥â¥ê¤ËÂФ¹¤ëÇÓ¾¥¢¥¯¥»¥¹À©¸æ¤Îµ¡Ç½¤Ï¤Ê¤¤¤Î¤Ç¡¢ ɬÍפǤ¢¤ì¤Ð¥»¥Þ¥Õ¥©¤Ê¤É¤òÍøÍѤ·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¹Ô¤¦¡£

1.5.2 ¥Ç¡¼¥¿¡¿Äê¿ô¤ÎÄêµÁ

¢¢ ¥á¥â¥ê°À­

#define M_COMMON        0x00000001      /* ¶¦Í­ */
#define M_SYSTEM        0x00000003      /* ¥·¥¹¥Æ¥à¤Î¤ß */
#define M_RESIDENT      0x00004000      /* ¾ïÃó */

¢¢ ¥á¥â¥ê¾õÂÖ

typedef struct m_state {
        W       blksz;          /* ¥Ö¥í¥Ã¥¯¥µ¥¤¥º */
        W       total;          /* Á´¥Ö¥í¥Ã¥¯¿ô */
        W       free;           /* »Ä¤ê¥Ö¥í¥Ã¥¯¿ô */
} M_STATE;

1.5.3 ¥·¥¹¥Æ¥à¥³¡¼¥ë

get_mbk
Ê
¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î³ÍÆÀ

¡Ú·Á¼°¡Û

ERR get_mbk( VP *adr, W nblk, UW atr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

VP  *adr    ³ÍÆÀ¤·¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÊÖ¤¹Îΰè
W   nblk    ³ÍÆÀ¤¹¤ë¥á¥â¥ê¥Ö¥í¥Ã¥¯¿ô( > 0)
UW  atr     ¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î°À­
            [ (M_COMMON ¡Â M_SYSTEM) ] | [M_RESIDENT] | [DELEXIT]
M_COMMON :

¶¦Í­¥á¥â¥ê¤ò»ØÄꤹ¤ë¡£
¶¦Í­¥á¥â¥ê¤Ï¡¢¤¹¤Ù¤Æ¤Î¥×¥í¥»¥¹¤«¤é¥¢¥¯¥»¥¹²Äǽ¡£

M_SYSTEM

¥·¥¹¥Æ¥à¥á¥â¥ê¤ò»ØÄꤹ¤ë¡£
¥·¥¹¥Æ¥à¥á¥â¥ê¤Ï¡¢¥·¥¹¥Æ¥à ( OS ¤ä¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥Ð¡¼Åù ) ¤«¤é¤Î¤ß¥¢¥¯¥»¥¹²Äǽ¡£ ¤³¤Î»ØÄê¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤ·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£

M_COMMON, M_SYSTEM ¤Î¤¤¤º¤ì¤Î»ØÄê¤â¤Ê¤±¤ì¤Ð¡¢ ¥í¡¼¥«¥ë¥á¥â¥ê¤È¤Ê¤ë¡£ ¥í¡¼¥«¥ë¥á¥â¥ê¤Ï¡¢¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò³ÍÆÀ¤·¤¿¥×¥í¥»¥¹¤«¤é¤Î¤ß¥¢¥¯¥»¥¹²Äǽ¡£

¢¨ ¶¦Í­ / ¥·¥¹¥Æ¥à / ¥í¡¼¥«¥ë¥á¥â¥ê¤Î»ØÄê¤Ï¡¢ ¥á¥â¥ê´ÉÍýµ¡Ç½¤¬¤Ê¤¤ CPU ¤Î¾ì¹ç¤Ë¤ÏÆÃ¤Ë°ÕÌ£¤ò»ý¤¿¤Ê¤¤¡£ ¤¤¤º¤ì¤âƱ¤¸°·¤¤¤È¤Ê¤Ã¤Æ¤·¤Þ¤¤¡¢Êݸ¤ì¤Ê¤¤¡£

M_RESIDENT :

¾ïÃó¤ò»ØÄꤹ¤ë¡£»ØÄ꤬¤Ê¤±¤ì¤ÐÈó¾ïÃó¤È¤Ê¤ë¡£

¾ïÃó»ØÄꤵ¤ì¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Ï¡¢ ¥Ç¥£¥¹¥¯¤Ê¤É¤Ë¥¹¥ï¥Ã¥×¥¢¥¦¥È¤µ¤ì¤ë¤³¤È¤Ê¤¯¾ï¤Ë¼ç¥á¥â¥ê¾å¤Ë¸ºß¤¹¤ë¡£

¢¨ ²¾ÁÛµ­²±¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Î¾ì¹ç¤Ë¤Ï¡¢ ÆÃ¤Ë°ÕÌ£¤ò»ý¤¿¤Ê¤¤(¾ïÃó¤ÈƱÅù¤Ë¤Ê¤ë)¡£

DELEXIT :

¥×¥í¥»¥¹½ªÎ»»þºï½ü¤ò»ØÄꤹ¤ë¡£

¤³¤Î»ØÄ꤬¤¢¤ë¤È¡¢ ¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò³ÍÆÀ¤·¤¿¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ë¤È¼«Æ°Åª¤Ë¥á¥â¥ê¥Ö¥í¥Ã¥¯¤¬²òÊü¤µ¤ì¤ë¡£ ¤¿¤À¤·¡¢¥í¡¼¥«¥ë¥á¥â¥ê¤Î¾ì¹ç¤Ï¡¢¤³¤Î»ØÄê¤Î̵ͭ¤Ë´Ø·¸¤Ê¤¯¡¢ ¥×¥í¥»¥¹¤Î½ªÎ»»þ¤Ë²òÊü¤µ¤ì¤ë¡£

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡á0  Àµ¾ï
¡ã0  ¥¨¥é¡¼(¥¨¥é¡¼¥³¡¼¥É)

¡Ú²òÀâ¡Û

nblk ¸Ä¤ÎϢ³¤·¤¿¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò³ÍÆÀ¤·¡¢ ¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤ò *adr ¤ËÊÖ¤¹¡£

¡Ú¥¨¥é¡¼¥³¡¼¥É¡Û

er_adr      : ¥¢¥É¥ì¥¹(adr)¤Î¥¢¥¯¥»¥¹¤Ïµö¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
er_nomem    : ¥á¥â¥êÎΰ褬ÉÔ­¤·¤¿¡£
er_nospc    : ¥·¥¹¥Æ¥à¤Î¥á¥â¥êÎΰ褬ÉÔ­¤·¤¿¡£
er_par      : ¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¢¤ë¡£
er_ctx      : ÉÔÀµ¤Ê¥³¥ó¥Æ¥­¥¹¥È¤«¤é¸Æ¤Ó½Ð¤·¤¿¡£

rel_mbk
Ê
¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î²òÊü

¡Ú·Á¼°¡Û

ERR rel_mbk( VP adr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

VP  adr     ²òÊü¤¹¤ë¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î¥¢¥É¥ì¥¹

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡á0  Àµ¾ï
¡ã 0 ¥¨¥é¡¼(¥¨¥é¡¼¥³¡¼¥É)

¡Ú²òÀâ¡Û

adr ¤Ç¼¨¤¹¥á¥â¥ê¥Ö¥í¥Ã¥¯¤ò²òÊü¤¹¤ë¡£ adr ¤Ï get_mbk() ¤ÇÆÀ¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¡Ú¥¨¥é¡¼¥³¡¼¥É¡Û

ER_MPTR     : ¥á¥â¥ê¥Ö¥í¥Ã¥¯¤Î¥¢¥É¥ì¥¹¤¬ÉÔÀµ¤Ç¤¢¤ë¡£
ER_CTX      : ÉÔÀµ¤Ê¥³¥ó¥Æ¥­¥¹¥È¤«¤é¸Æ¤Ó½Ð¤·¤¿¡£

mbk_sts
Ê
¥á¥â¥ê¾õÂÖ»²¾È

¡Ú·Á¼°¡Û

ERR mbk_sts( M_STATE *sts )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

M_STATE   sts   ¥á¥â¥ê¾õÂÖ¤òÊÖ¤¹Îΰè
typedef struct  m_state {
    W   blksz;  /* ¥Ö¥í¥Ã¥¯¥µ¥¤¥º */
    W   total;  /* Á´¥Ö¥í¥Ã¥¯¿ô */
    W   free;   /* »Ä¤ê¥Ö¥í¥Ã¥¯¿ô */
} M_STATE;

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡á0    Àµ¾ï
¡ã0    ¥¨¥é¡¼(¥¨¥é¡¼¥³¡¼¥É)

¡Ú²òÀâ¡Û

¸½ºß¤Î¥á¥â¥ê»ÈÍѾõ¶·¤Ê¤É¤ò¼èÆÀ¤¹¤ë¡£

blksz :
¥á¥â¥ê³ä¤êÅö¤Æ¤Îñ°Ì( 1 ¥Ö¥í¥Ã¥¯)¤Î¥Ð¥¤¥È¿ô¡£
°ìÈÌ¤Ë¤Ï CPU ¤Î¥Ú¡¼¥¸¥µ¥¤¥º¤È¤Ê¤ë¡£É¸½àŪ¤Ë¤Ï 4KB¡£
total :
¥·¥¹¥Æ¥àÁ´ÂΤÎÁí¥Ö¥í¥Ã¥¯¿ô¡£
free :
¥·¥¹¥Æ¥àÁ´ÂΤÎ̤»ÈÍÑ¥Ö¥í¥Ã¥¯¿ô¡£

²¾ÁÛµ­²±¤ò¹Ô¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ Á´¥Ö¥í¥Ã¥¯¿ô¡¢»Ä¤ê¥Ö¥í¥Ã¥¯¿ô¤¬°ì°Õ¤Ë·èÄê¤Ç¤­¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¶ñÂÎŪ¤Ê°ÕÌ£¤Ï¥¤¥ó¥×¥ê¥á¥ó¥È¤Ë°Í¸¤¹¤ë¡£ ¤¿¤À¤·¡¢free ¡à total ¤¬»Ä¤ê¥á¥â¥ê¤Î³ä¹ç¤Î»²¹ÍÃͤȤʤë¤è¤¦¤ÊÃͤȤ¹¤ë¡£

¥¤¥ó¥×¥ê¥á¥ó¥È¤Ë¤è¤ê¡¢ ¶ñÂÎŪ¤ÊÃͤ¬ÀßÄê¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢ Á´¥Ö¥í¥Ã¥¯¿ô¡¢»Ä¤ê¥Ö¥í¥Ã¥¯¿ô¤È¤â¤Ë -1 ¤òÀßÄꤹ¤ë¤â¤Î¤È¤¹¤ë¡£

¡Ú¥¨¥é¡¼¥³¡¼¥É¡Û

ER_ADR      : ¥¢¥É¥ì¥¹(sts)¤Î¥¢¥¯¥»¥¹¤Ïµö¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

1.5.4 ¥é¥¤¥Ö¥é¥ê

malloc
Ê
Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§DELEXIT

¡Ú·Á¼°¡Û

void*   malloc( size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  size    ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤«¤é»ØÄꤷ¤¿¥µ¥¤¥º¤Î¥á¥â¥ê¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£

calloc
Ê
Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§DELEXIT

¡Ú·Á¼°¡Û

void*   calloc( size_t nelem, size_t elsize )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  nelem   ³ÍÆÀ¤·¤¿¤¤Í×ÁÇ¿ô( > 0)
size_t  elsize  1Í×ÁǤΥХ¤¥È¿ô( > 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤«¤é elsize ¤ÎÂ礭¤µ¤Î nelem ¸Ä¤ÎÍ×ÁǤò³ÊǼ¤¹¤ëÎΰè¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£ ³ä¤êÅö¤Æ¤¿Îΰè¤Ï 0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£

realloc
Ê
Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤ÎºÆ³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§DELEXIT

¡Ú·Á¼°¡Û

void*   realloc( void *ptr, size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ¥µ¥¤¥ºÊѹ¹¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹
                NULL ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¿·µ¬³ÍÆÀ
size_t  size    ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(¡æ0)
                0 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï²òÊü

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥êÃæ¤Î ptr ¤Ç»ØÄꤵ¤ì¤ëÎΰè¤Î¥µ¥¤¥º¤ò size ¤ËÊѹ¹¤·¤ÆºÆ³ÍÆÀ¤·¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£
ptr ¤Ï¡¢ malloc(), calloc(), realloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

free
Ê
Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥ê¤Î²òÊü(¥é¥¤¥Ö¥é¥ê)

¡Ú·Á¼°¡Û

void    free( void *ptr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ²òÊü¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹

¡Ú²òÀâ¡Û

ptr ¤Ç»ØÄꤵ¤ì¤¿Èó¾ïÃó¥í¡¼¥«¥ë¥á¥â¥êÆâ¤ÎÎΰè¤ò²òÊü¤¹¤ë¡£
ptr ¤Ï¡¢ malloc(), calloc(), realloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

Smalloc
Ê
Èó¾ïÃó¶¦Í­¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_COMMON

¡Ú·Á¼°¡Û

void*   Smalloc( size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  size    ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¶¦Í­¥á¥â¥ê¤«¤é»ØÄꤷ¤¿¥µ¥¤¥º¤Î¥á¥â¥ê¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£

Scalloc
Ê
Èó¾ïÃó¶¦Í­¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_COMMON

¡Ú·Á¼°¡Û

void*   Scalloc( size_t nelem, size_t elsize )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  nelem   ³ÍÆÀ¤·¤¿¤¤Í×ÁÇ¿ô(> 0)
size_t  elsize  1 Í×ÁǤΥХ¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¶¦Í­¥á¥â¥ê¤«¤é elsize ¤ÎÂ礭¤µ¤Î nelem ¸Ä¤ÎÍ×ÁǤò³ÊǼ¤¹¤ëÎΰè¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£ ³ä¤êÅö¤Æ¤¿Îΰè¤Ï 0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£

Srealloc
Ê
Èó¾ïÃó¶¦Í­¥á¥â¥ê¤ÎºÆ³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_COMMON

¡Ú·Á¼°¡Û

void*   Srealloc( void *ptr, size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ¥µ¥¤¥ºÊѹ¹¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹
                NULL ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¿·µ¬³ÍÆÀ
size_t  size    ºÆ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(¡æ0)
                0 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï²òÊü

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¶¦Í­¥á¥â¥êÃæ¤Î ptr ¤Ç»ØÄꤵ¤ì¤ëÎΰè¤Î¥µ¥¤¥º¤ò size ¤ËÊѹ¹¤·¤ÆºÆ³ÍÆÀ¤·¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£
ptr ¤Ï¡¢Æ±¤¸¥×¥í¥»¥¹Æâ¤Ç³ÍÆÀ¤·¤¿¥á¥â¥êÎΰè¤Ç¡¢ Smalloc(), Scalloc(), Srealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

Sfree
Ê
Èó¾ïÃó¶¦Í­¥á¥â¥ê¤Î²òÊü(¥é¥¤¥Ö¥é¥ê)

¡Ú·Á¼°¡Û

void    Sfree( void *ptr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ²òÊü¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹

¡Ú²òÀâ¡Û

ptr ¤Ç»ØÄꤵ¤ì¤¿Èó¾ïÃó¶¦Í­¥á¥â¥êÆâ¤ÎÎΰè¤ò²òÊü¤¹¤ë¡£
ptr ¤Ï¡¢Æ±¤¸¥×¥í¥»¥¹Æâ¤Ç³ÍÆÀ¤·¤¿¥á¥â¥êÎΰè¤Ç¡¢ Smalloc(), Scalloc(), Srealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

Kmalloc
Ê
¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM | M_RESIDENT

¡Ú·Á¼°¡Û

void*   Kmalloc( size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  size    ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤«¤é»ØÄꤷ¤¿¥µ¥¤¥º¤Î¥á¥â¥ê¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Kcalloc
Ê
¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM | M_RESIDENT

¡Ú·Á¼°¡Û

void*   Kcalloc( size_t nelem, size_t elsize )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  nelem   ³ÍÆÀ¤·¤¿¤¤Í×ÁÇ¿ô(> 0)
size_t  elsize  1 Í×ÁǤΥХ¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤«¤é elsize ¤ÎÂ礭¤µ¤Î nelem ¸Ä¤ÎÍ×ÁǤò³ÊǼ¤¹¤ëÎΰè¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£ ³ä¤êÅö¤Æ¤¿Îΰè¤Ï 0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Krealloc
Ê
¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤ÎºÆ³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM | M_RESIDENT

¡Ú·Á¼°¡Û

void*   Krealloc( void *ptr, size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ¥µ¥¤¥ºÊѹ¹¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹
                NULL ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¿·µ¬³ÍÆÀ
size_t  size    ºÆ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(¡æ0)
                0 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï²òÊü

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥êÃæ¤Î ptr ¤Ç»ØÄꤵ¤ì¤ëÎΰè¤Î¥µ¥¤¥º¤ò size ¤ËÊѹ¹¤·¤ÆºÆ³ÍÆÀ¤·¡¢¤½¤ÎÀèÆ¬¥É¥ì¥¹¤òÌ᤹¡£
ptr ¤Ï¡¢ Kmalloc(), Kcalloc(), Krealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Kfree
Ê
¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î²òÊü(¥é¥¤¥Ö¥é¥ê)

¡Ú·Á¼°¡Û

void    Kfree( void *ptr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ²òÊü¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹

¡Ú²òÀâ¡Û

ptr ¤Ç»ØÄꤵ¤ì¤¿¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥êÆâ¤ÎÎΰè¤ò²òÊü¤¹¤ë¡£
ptr ¤Ï¡¢Kmalloc(), Kcalloc(), Krealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Vmalloc
Ê
Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM

¡Ú·Á¼°¡Û

void*   Vmalloc( size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  size    ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤«¤é»ØÄꤷ¤¿¥µ¥¤¥º¤Î¥á¥â¥ê¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Vcalloc
Ê
Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM

¡Ú·Á¼°¡Û

void*   Vcalloc( size_t nelem, size_t elsize )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

size_t  nelem   ³ÍÆÀ¤·¤¿¤¤Í×ÁÇ¿ô(> 0)
size_t  elsize  1 Í×ÁǤΥХ¤¥È¿ô(> 0)

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤«¤é elsize ¤ÎÂ礭¤µ¤Î nelem ¸Ä¤ÎÍ×ÁǤò³ÊǼ¤¹¤ëÎΰè¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£ ³ä¤êÅö¤Æ¤¿Îΰè¤Ï 0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Vrealloc
Ê
Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤ÎºÆ³ÍÆÀ(¥é¥¤¥Ö¥é¥ê)
¥á¥â¥ê°À­¡§M_SYSTEM

¡Ú·Á¼°¡Û

void*   Vrealloc( void *ptr, size_t size )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ¥µ¥¤¥ºÊѹ¹¤·¤¿¤¤Îΰè¤Î¥¢¥É¥ì¥¹
                NULL ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï¿·µ¬³ÍÆÀ
size_t  size    ºÆ³ÍÆÀ¤·¤¿¤¤¥á¥â¥ê¤Î¥Ð¥¤¥È¿ô(¡æ0)
                0 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï²òÊü

¡Ú¥ê¥¿¡¼¥óÃÍ¡Û

¡âNULL  Àµ¾ï(³ÍÆÀ¤·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹)
¡áNULL  ¥¨¥é¡¼

¡Ú²òÀâ¡Û

Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥êÃæ¤Î ptr ¤Ç»ØÄꤵ¤ì¤ëÎΰè¤Î¥µ¥¤¥º¤ò size ¤ËÊѹ¹¤·¤ÆºÆ³ÍÆÀ¤·¡¢¤½¤ÎÀèÆ¬¥¢¥É¥ì¥¹¤òÌ᤹¡£
ptr ¤Ï¡¢Vmalloc(), Vcalloc(), Vrealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£

Vfree
Ê
Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥ê¤Î²òÊü(¥é¥¤¥Ö¥é¥ê)

¡Ú·Á¼°¡Û

void    Vfree( void *ptr )

¡Ú¥Ñ¥é¥á¡¼¥¿¡Û

void    *ptr    ²òÊü¤·¤¿¤¤Îΰè¤ÎÀèÆ¬¥¢¥É¥ì¥¹

¡Ú²òÀâ¡Û

ptr ¤Ç»ØÄꤵ¤ì¤¿Èó¾ïÃó¥·¥¹¥Æ¥à¥á¥â¥êÆâ¤ÎÎΰè¤ò²òÊü¤¹¤ë¡£
ptr ¤Ï¡¢Vmalloc(), Vcalloc(), Vrealloc() ¤ÇÊÖ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¢¨ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥»¥¹¤«¤é¤Ï»ÈÍѤǤ­¤Ê¤¤¡£


¤³¤Î¾Ï¤ÎÌܼ¡¤Ë¤â¤É¤ë
Á°ÊÇ:1.4 ¥°¥í¡¼¥Ð¥ë̾´ÉÍý¤Ë¤â¤É¤ë
¼¡ÊÇ:1.6 ¥Õ¥¡¥¤¥ë´ÉÍý¤Ë¤¹¤¹¤à