機能 |
メモリ領域を再割り当てする。 値は古いオブジェクトの内容が保持される。割り当て後のサイズが小さい場合は保持できるサイズ分だけの内容となる。サイズが大きい場合は古いオブジェクトのサイズを超えた分の内容は不定となる。 ※ 割り当てた領域の値は不定 ※ 割り当てた領域は必ずfree関数で解放すること |
||||
---|---|---|---|---|---|
定義 |
#include <stdlib.h> void * realloc ( void * ptr, size_t size ); |
||||
引数 |
|
||||
戻り値 |
割り当てた領域へのポインタを返す。失敗した場合はNULLを返す。 |
||||
実装例 |
#include <stdlib.h> #include <stdio.h> int main(void) { int *p; int i; /* 領域を割り当てる */ p = (int*)calloc(10, sizeof(int)); /* 数値を代入 */ for(i=0; i<10; i++) { p[i] = i; } /* 半分のサイズに再割り当て */ p = (int*)realloc(p, 5 * sizeof(int)); /* 数値を表示 */ for(i=0; i<5; i++) { printf("[%d]=%d\n", i, p[i]); } /* 解放 */ free(p); return 0; } |
||||
実行結果 |
[0]=0 [1]=1 [2]=2 [3]=3 [4]=4 |
realloc()