realloc
alloc.h:インデックス への移動
ヘッダーファイル
alloc.h, stdlib.h
カテゴリ
メモリルーチン
プロトタイプ
void *realloc(void *block, size_t size);
説明
メインメモリを再割り当てします。
realloc は,前に割り当てられたブロックを size バイトに収縮または拡張しようとします。size が 0 の場合,メモリブロックは解放され,NULL が返されます。block 引数は,前に malloc,calloc,または realloc を呼び出して取得されたメモリブロックを示します。block がヌルポインタの場合,realloc の機能は malloc とまったく同じです。
realloc は,割り当て済みのブロックのサイズを size に調整し,必要であれば内容を新しい場所にコピーします。
戻り値
realloc は,再割り当てされたブロックのアドレスを返します。これは,元のブロックのアドレスとは異なる場合があります。
ブロックを再割り当てできない場合,realloc は NULL を返します。
size の値が 0 の場合,メモリブロックは解放され,realloc は NULL を返します。
例
#include <stdio.h>
#include <alloc.h>
#include <string.h>
int main(void)
{
char *str;
/* 文字列にメモリを割り当てる */
str = (char *) malloc(10);
/* 文字列に「Hello」をコピーする */
strcpy(str, "Hello");
printf("String is %s\n Address is %p\n", str, str);
str = (char *) realloc(str, 20);
printf("String is %s\n New address is %p\n", str, str);
/* メモリを解放する */
free(str);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |