Sds realloc
- 構文
- void *sds_realloc (void *memloc, size_t bytes);
- 機能
- メモリのアロケーションのサイズを変更する。
- メモリサイズが増える場合は、メモリ領域の内容は保存される。メモリサイズが減少する場合は、内容が部分的に失われる事もある。
- いろいろなサイズで確保・開放を繰り返すとメモリ割り当てに無駄が生じてしまうので、sds_realloc を使う頻度をできるだけ減らすようなコーディングが望ましいらしい。
- 引数
-
- *memloc : メモリ領域
- bytes : バイトサイズ
- 戻り値
- 成功ならメモリ領域のポインター、失敗ならNULLを返す。
- サンプル
int *p1, *p2; p1 = (int*)sds_calloc(5, sizeof(int)); /* int型の要素を5個割り当て */ /* 何かの処理 */ p2 = (int*)sds_realloc(p1, sizeof(int)); /* int型の1つの領域を再割り当て */ if( p2 == NULL ) /* 成功したかどうか調べる */ { free( p1 ); /* 失敗した場合、元の領域が有効なままなので解放する */ return 0; } p1 = NULL; /* 安全策。p1 は sds_realloc() の内部で解放されているが、 使えないことを明確にするために NULL を代入しておく */ /* 何かの処理 */ free( p2 );