● fixed X ユーティリティー - 関数リファレンス
FIXEDVAL値の一次元配列
int __stdcall fixedutil_alloc_memtable(PMEMTABLEINFO prm,PMEMFUNC pfunc)
int __stdcall fixedutil_free_memtable(PMEMTABLEINFO prm,PMEMFUNC pfunc)
引数
引数名 | 意味 |
prm | MEMTABLEINFO構造体の実体の先頭アドレス |
pfunc | MEMFUNC構造体の実体の先頭アドレス |
戻り値
関数fixedutil_alloc_memtable は、正常終了した場合は STATUS_NORMAL 、設定値が異常な場合は STATUS_PARAMERROR 、メモリの確保に失敗した場合は STATUS_NOTENOUGHMEM を返します。
関数fixedutil_free_memtable は、正常終了した場合は 1 、設定値が異常な場合はゼロを返します。
説明
関数fixedutil_alloc_memtable は FIXEDVAL値の一次元配列を確保し、関数fixedutil_free_memtable は、その一次元配列を解放します。
関数fixedutil_alloc_memtable で配列を確保する場合、MEMTABLEINFO構造体で設定値を渡す必要があります。
MEMTABLEINFO構造体.
typedef struct {
PFIXEDVAL *ppmem;
int width;
int cnt;
long reserved;
} MEMTABLEINFO,*PMEMTABLEINFO;
メンバ名 | 意味 |
ppmem | 確保された一次元配列の先頭アドレス |
width | 一要素分の数値幅 |
cnt | 要素数 |
reserved | 予約済み |
関数に渡す情報は width と cnt です。
関数fixedutil_alloc_memtable は、与えるパラメータが次のような状態の場合、STATUS_PARAMERROR を返し終了します。
- 関数の引数 prm または pfunc が NULL の場合
- MEMTABLEINFO構造体のメンバ width が 4 の倍数ではなかった場合
- MEMTABLEINFO構造体のメンバ cnt がゼロの場合
- MEMFUNC構造体のメンバ pfmemalloc が NULL の場合
関数fixedutil_free_memtable は、与えるパラメータが次のような状態の場合、ゼロを返し終了します。
- 関数の引数 prm または pfunc が NULL の場合
- MEMTABLEINFO構造体のメンバ ppmem が NULL の場合
- MEMFUNC構造体のメンバ pfmemfree が NULL の場合
fixedutil_alloc_memtable を実行すると、cnt 個の PFIXEDVALのテーブルと、width 幅・cnt 個の FIXEDVAL型変数の領域が確保され、各 FIXEDVAL変数の先頭アドレスがテーブルに格納されます。ppmem にはPFIXEDVALテーブルの先頭アドレスが格納されます。

メモリ確保・解放処理は、MEMFUNC構造体によりユーザが指定したものを使用します。
fixedutil_alloc_memtable で作成したポインタテーブルやメモリの実体は、他のライブラリ関数で拡張・収縮・削除させる事はできません。ユーザが MEMFUNC構造体で指定した関数に属するものを使用しても操作できませんので、注意してください。
fixedutil_free_memtable は、テーブルの内容を変更していても指定のメモリブロック全てを解放しますので、ポインタテーブルの内容を元に戻さなくても問題ありません。ただし、呼び出し側が独自に確保したメモリのアドレスをテーブルに格納しても、そのメモリは解放されません。