この章では、メモリ管理を行う際に利用することになるグローバル関数やマクロについて解説しています。NSPR はおなじみの malloc()
, calloc()
, realloc()
や free()
にマップされているヒープベースのメモリ管理関数を提供しています。
メモリ割り当て関数
NSPR は自身にヒープ領域を確保しており、これらの関数はそのヒープ領域に対して動作します。ライブラリは Netscape security libraries などといった NSPR の最初に作成され、これらの関数をメモリの確保や開放に利用しています。これらのライブラリで利用するためにメモリを確保する場合や、これらのライブラリで確保されたメモリを開放する場合は、libc の同等の関数ではなく、必ず NSPR の関数を利用する必要があります。
メモリ割り当て関数は次のものになります :
PR_Malloc()
, PR_Calloc()
, PR_Realloc()
や PR_Free()
は、その libc の同等の関数である malloc()
, calloc()
, realloc()
や free()
と同じ定数を利用し、同等の動作を行います。(ただし、引数の型の size_t
は PRUint32
に変換されています。) PR_Malloc()
, PR_Calloc()
や PR_Realloc()
で確保されたメモリ領域は、必ず PR_Free()
で開放される必要があります。
メモリ割り当てマクロ
メモリ割り当て関数のマクロ版も提供されており、プログラミングの利便性のために同様な追加のマクロも提供されています :