● fixed X ユーティリティー - 関数リファレンス
一次元配列の要素数を変更する
int __stdcall fixedutil_realloc_memtable(PMEMTABLEINFO prm,int newcnt,PMEMFUNC pfunc)
引数
戻り値
正常終了した場合は STATUS_NORMAL を返します。
設定値が異常な場合は STATUS_PARAMERROR 、メモリの確保に失敗した場合は STATUS_NOTENOUGHMEM を返します。
説明
prm のメンバ ppmem が指す FIXEDVAL値の一次元配列の要素数を変更します。
ppmem が指す一次元配列は、fixedutil_alloc_memtable により前以って作成されている必要があります。
関数が正常終了した場合、prm のメンバ cnt は、引数 newcnt に置き換わります。配列が短くなった場合は newcnt の要素数分だけ内容が保持され、残りは切り捨てられます。配列が長くなった場合は、以前の内容が全て保持され、残りはゼロで埋められます。
次の条件に一つでも該当する場合、STATUS_PARAMERROR を返し終了します。
- 関数の引数 prm または pfunc が NULL の場合
- 関数の引数 newcnt がゼロの場合
- MEMTABLEINFO構造体のメンバ width が 4 の倍数ではなかった場合
- MEMTABLEINFO構造体のメンバ cnt がゼロの場合
- MEMTABLEINFO構造体のメンバ ppmem が NULL の場合
- MEMFUNC構造体のメンバ pfmemalloc または pfmemfree が NULL の場合
関数がエラーで終了した場合、ppmem の指す一次元配列は、元の状態を保持します。また、newcnt = cnt の場合(同じ要素数で関数を実行した場合)も、元の状態を保持したまま STATUS_NORMAL を返して終了します。
newcnt ≠ cnt で関数が正常終了した場合、関数実行前の一次元配列領域は解放され、新しい領域が確保されます。そのため、実行前と実行後の配列ポインタは一致しませんので注意してください。