● fixed X ユーティリティー - 関数リファレンス
メモリ確保・解放関数
ユーティリティー関数では、多量メモリの確保・解放の必要が生じた場合、ユーザが指定した方法によって処理を行います。
メモリ確保、解放関数のポインタは MEMFUNC構造体により渡します。
typedef void * (__stdcall *FUNC_MEMALLOC)(size_t ,void *);
typedef void (__stdcall *FUNC_MEMFREE)(void *,void *);
typedef struct {
FUNC_MEMALLOC pfmemalloc;
FUNC_MEMFREE pfmemfree;
void *param;
long reserved;
} MEMFUNC,*PMEMFUNC;
メンバ名 | 意味 |
pfmemalloc | メモリ確保関数のポインタ |
pfmemfree | メモリ解放関数のポインタ |
param | 各関数に渡す追加情報 |
reserved | 予約済み |
pfmemalloc で指定するメモリ確保関数は次のようになります。
void * __stdcall 関数名(size_t size ,void *param )
{
メモリ確保処理
return 確保したメモリの先頭アドレス or NULL;
}
size には必要確保量がバイト単位で渡されます。param には MEMFUNC構造体のメンバ param の値がそのまま渡されます。呼び出し側はメモリ確保処理をこのコールバック関数内で行い、成功した場合は確保したメモリの先頭アドレスを返し、失敗した場合は NULL を返してください。
pfmemfree で指定するメモリ解放処理は次のようになります。
void __stdcall 関数名(void *pbase ,void *exparam )
{
メモリ解放処理
}
pbase には解放するメモリの先頭アドレスが渡され、exparam には MEMFUNC構造体のメンバ param の値がそのまま渡されます。呼び出し側はメモリ解放処理をこのコールバック関数内で行います。戻り値はありません。
確保・解放関数は FIXEDVAL領域に関する処理以外でも呼び出されますので、FIXEDVAL型に特化した処理を記述しないでください。