# NNS_FndResizeForMBlockFrmHeap

## 構文

      #include <nnsys/fnd.h>

      u32 NNS_FndResizeForMBlockFrmHeap(
              NNSFndHeapHandle    heap,
              void*               memBlock,
              u32                 size);

## 引数

heap | フレームヒープのハンドル
memBlock | サイズを変更するメモリブロックへのポインタ
size | 変更するメモリブロックのサイズ(バイト)。4未満の値を指定された場合は、4が指定されたものとして処理します。

## 返り値

関数が成功した場合、変更されたメモリブロックのサイズ(バイト)を返します。 関数が失敗した場合、0 を返します。

## 説明

フレームヒープから確保されたメモリブロックのサイズを変更します。ただし、サイズを変更できるメモリブロックには条件があり、次に示す条件を満たす必要があります。

- ヒープの空き領域の前方から確保されたメモリブロックの中で、最後に確保されたメモリブロック

ヒープの空き領域の前方からメモリブロックを確保するには、関数NNS_FndAllocFromFrmHeap()を使用するか、関数NNS_FndAllocFromFrmHeapEx()を使用するときにアライメント値に正の値を指定します。

メモリブロックを今の大きさよりも大きくするとき、メモリブロックの後方にサイズを拡張するのに十分な空き領域が存在する必要があります。 十分な空き領域が存在しない場合は、関数は失敗し 0を返します。メモリブロックのサイズを大きくできた場合、メモリブロックの大きさが要求したサイズよりも大きい場合があります。

メモリブロックを今の大きさより小さくするとき、小さくするサイズが数バイト程度と少ない場合は縮小できない場合があります。 そのときは、現在のメモリブロックのサイズを返します。

この関数では、memBlockで指定された値が、この関数の条件を満たすメモリブロックへのポインタを指しているのかどうかのチェックは行っていません。条件を満たさない値を指定した場合の挙動は不定です。

## 参照

`NNS_FndAllocFromFrmHeap, NNS_FndAllocFromFrmHeapEx, NNS_FndCreateFrmHeap, NNS_FndCreateFrmHeapEx`

## 履歴

2004/08/02 初版