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 );