Void *syReallocMulti( heaph, op, nbytes )
SYS_MALCM_HEAPH *heaph
Void *op
Uint32 nbytes
heaph (出力)ヒープハンドル op すでに確保されているメモリ領域へのポインタ nbytes 要求するサイズ
NULL メモリ領域の拡大に失敗した その他 取得したメモリ領域へのポインタ
syMallocMultiCreate サブヒープ領域上の syMallocMulti で取得された領域を nbytes バイトに拡張または縮小します。結果として位置が変わることがありますが、古いエリアの内容はコピーされます。
Sint8 myHeap[1024]; Void *p; SYS_MALCM_HEAPH myHeaph; STRUCT_FOO foo; syMallocMultiCreateHeap(&myHeaph, myHeap, 1024); if((p = syMallocMulti(&myHeaph, sizeof(STRUCT_FOO))) == NULL){ /* Could not allocate the memory */ myError(); } else { /* Allocation OK */ DoWhatYouWant(p); { Void *tmpP; if((tmpP = syReallocMulti(&myHeaph, p, sizeof(STRUCT_FOO*2))) == NULL){ /* Could not reallocate the memory */ myError(); } else { p = tmpP; DoWhatYouWant2(p); } } syFreeMulti(&myHeaph, p); } syMallocMultiDelete(&heaph);
サブヒープ領域に対する操作である以外は syRealloc()関数と同等の機能です。
syMallocMultiCreate() サブヒープの登録 syMallocMultiDelete() サブヒープの登録解除 syMallocMulti() syMallocMulti サブヒープからのメモリ取得 syFreeMulti() サブヒープから取得したメモリ領域の開放 syCallocMulti() サブヒープ領域への calloc 操作 syMallocMultiStat() サブヒープ領域の使用状況調査 syMallocMultiChangeIF() サブヒープに対するインタフェースの置換え syRealloc() 確保したメモリのサイズ変更