● 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型に特化した処理を記述しないでください。