MALLOC(3) 名前 malloc, calloc, realloc, free - 動的なメモリの確保と開放 書式 #include void *malloc(size_t n); void *calloc(unsigned int nelem, size_t elsize); void *realloc(void *ptr, size_t size); void free(void *p); 解説 malloc(), calloc(), realloc(), free() は高レベルのメモリ管理をおこな う関数である。 malloc() はnバイトのメモリ・ブロックをヒープ領域から切り出し、切り出 されたブロックの先頭へのポインタを関数の値として返す。もし、ヒー プ領域に十分なメモリがない時には、NULLを返す。割り当てられたメモ リ領域はクリアされない。 calloc()はサイズがelsizeバイトのメモリ・ブロックをnelem 個分確保する。 確保された領域はゼロ・クリアされる。 realloc()はmalloc(), calloc(), realloc()で確保したメモリのサイズを size バイトに変更する。可能ならばptr番地にsizeバイトのメモリを確保する。 ptr番地に十分な空きがない場合は新たな場所にsize バイトのメモ リを確保し、ptr番地の内容をコピーしたのちptrを解放する。 realloc()のptrにNULLを指定するとmalloc(size)と等価で、sizeバイトの領 域を新たに確保する。 size に0を指定するとfree(ptr)と同じ動作をし、 ptrが指す領域を開放したうえで値NULLを返す。 free()はpが示すメモリ・ブロックを解放する。pはmalloc(), calloc(), realloc()によって割り付けられたポインタでなければならない。 返り値 malloc(), calloc()は確保されたメモリ・ブロックへのポインタを返し、確 保できない場合はNULLを返す。 realloc() は再割り当てされたメモリ・ブロックへのポインタを返す。 再割り当てできなかったときには値NULLを返す。 準拠 ANSI-C 関連項目 brk(2)