Shinobi Library - メモリマネージメント関数

syReallocMulti

サブヒープ上での realloc 操作

書式

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()
 確保したメモリのサイズ変更

syReallocMulti
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000