<Return[H]><Top>

HeapAlloc

Declare Function Api_HeapAlloc& Lib "kernel32" Alias "HeapAlloc" (ByVal hHeap&, ByVal dwFlags&, ByVal dwBytes&)

Declare Function HeapAlloc Lib "kernel32" Alias "HeapAlloc" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long

メモリブロックをヒープから割り当てる。割り当てられるメモリは、移動可能ではない。

パラメータ
hHeap
    [入力]割り当てたいヒープのハンドルを指定指定する。

    HeapCreate 関数または GetProcessHeap 関数が、このハンドルを返指定する。
dwFlags
    [入力]ヒープ割り当ての方法を制御するオプションを指定指定する。

    これらの値を指定すると、HeapCreate を使ってヒープを作成したときに指定された、対応する値が上書きされる。

    このパラメータで、次の値の任意の組み合わせを指定指定する。

    値                                                  

意味                                                                                                                     

    HEAP_GENERATE_EXCEPTIONS

 

メモリ不足などの状況で関数が失敗したときに、NULL を返すのではなく、例外を発生させるよう

システムに指示指定する。

    HEAP_NO_SERIALIZE

 

 

 

HeapAlloc 関数がヒープにアクセスしている間、相互排他を行わないよう指示指定する。
プロセスヒープにアクセスする場合は、この値を指定するべきではない。一方、システムはアプリケ

ーションプロセス内に、プロセスヒープに同時にアクセスする Ctrl+C ハンドラのような追加のスレッド

を作成してもかまわない。

    HEAP_ZERO_MEMORY

 

割り当てメモリの内容を 0 に初期化するよう指示指定する。この値を指定しない場合、メモリの内

容を 0 に初期化することはない。

dwBytes
    [入力]確保したいバイト数を指定指定する。
    hHeap パラメータで指定したヒープが「拡張不可能」な場合は、dwBytes で 0x7FFF8 未満の値を指定しなければならない。

    dwMaximumSize に 0 以外の値を指定して HeapCreate 関数を呼び出すと、拡張不可能なヒープを作成できる。

戻り値
    関数が成功すると、割り当てられたメモリブロックへのポインタが返る。
    HEAP_GENERATE_EXCEPTIONS を指定しなかった場合、関数が失敗すると、NULL が返る。
    HEAP_GENERATE_EXCEPTIONS を指定した場合、関数が失敗すると次の例外が生成される。

    値                                                 

意味                                                          

    STATUS_NO_MEMORY

メモリ不足、またはヒープが壊れていることが原因で、メモリの割り当てに失敗した。

   STATUS_ACCESS_VIOLATION

 

ヒープが壊れていること、または関数のパラメータが不適切なことが原因で、メモリの割り当てに失敗した。

    注意 ヒープが壊れている場合にどちらの例外が発生するかは、ヒープの壊れ方による。
    この関数は、実行に失敗しても、SetLastError 関数を呼び出さない。

    したがって、GetLastError 関数を使って拡張エラー情報を取得することはできない。