<Return[UV]><Top>

VirtualFree

Declare Function Api_VirtualFree& Lib "kernel32" Alias "VirtualFree" (lpAddress As Any, ByVal dwSize&, ByVal dwFreeType&)

Declare Function VirtualFree Lib "kernel32" (lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long

呼び出し側プロセスの仮想アドレス空間内のページ領域の解放、コミット解除、解放およびコミット解除のいずれかを行う。
VirtualAllocEx 関数を使って他のプロセス内に割り当てたメモリを解放するには、VirtualFreeEx 関数を使う。

パラメータ
lpAddress
    [入力]解放したいページ領域のベースアドレスへのポインタを指定する。

    dwFreeType パラメータで MEM_RELEASE を指定する場合、領域を予約したときに VirtualAlloc 関数が返したベースアドレスを指定しな

    ければならない。
dwSize
    [入力]コミット解除または解放したいページ領域のサイズを、バイト単位で指定する。

    dwFreeType パラメータで MEM_RELEASE を指定する場合、このパラメータは 0 でなければならない。

    それ以外の場合は、lpAddress〜(lpAddress+dwSiz)の範囲に少なくとも 1 バイトが所属しているすべてのページが影響を受ける。

    つまり、ページ境界にまたがる 2 バイトの領域を指定した場合は、両方のページが解放される。
dwFreeType
    [入力]メモリ解放のタイプを指定する。次のフラグの一方または両方を指定する。

    値                             

意味                                                                                                                                            

    MEM_DECOMMIT

 

 

指定したコミット済みページ領域をコミット解除する。
コミットされていないページをコミット解除しても、関数は失敗しない。

これは、失敗について気にすることなく、コミット済みまたは未コミットのページからなる領域をコミット解除できること

を意味する。

    MEM_RELEASE

 

指定した予約済みページ領域を解放する。

この値を指定するときは、dwSize パラメータは 0 でなければならない。さもないと、この関数は失敗する。


戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。