malloc、free、realloc、calloc、mallopt、mallinfo、mallinfo_heap、alloca、valloc、または posix_memalign サブルーチン

目的

メモリー割り振り、再割り振り、割り振り解除、およびヒープ管理ツールの完全なセットを提供します。

ライブラリー

バークレー互換ライブラリー (libbsd.a)

標準 C ライブラリー (libc.a)

Malloc サブシステム API

malloc

構文 (malloc)

#include <stdlib.h>
void *malloc (Size)
size_t Size;

説明 (malloc)

malloc サブルーチンは、 Size パラメーターで指定されたバイト数以上のメモリー・ブロックを指すポインターを戻します。 ブロックは、どのタイプのデータにも使用できるように位置合わせされます。 malloc サブルーチンによって割り当てられたスペースがオーバーランすると、未定義の結果になります。

パラメーター (malloc)

項目 説明
Size 割り振るメモリーのサイズをバイト単位で指定します。

戻り値 (malloc)

正常終了すると、 malloc サブルーチンは、任意のタイプのオブジェクトのストレージ用に適切に位置合わせされたスペースへのポインターを戻します。 要求されたサイズが 0 の場合、 malloc は通常の環境では NULL を戻します。 ただし、プログラムが定義済みの _LINUX_SOURCE_COMPAT マクロを使用してコンパイルされた場合、 malloc はサイズ 0 のスペースへの有効なポインターを戻します。

何らかの理由で要求を満たすことができない場合、 malloc サブルーチンは NULL を戻します。

エラー・コード (malloc)

項目 説明
ENOMEM 要求を処理するための十分なストレージ・スペースがありません。

free

構文 (free)

#include <stdlib.h>
void free (Pointer)
void * Pointer;

説明 (無料)

free サブルーチンは、以前に malloc サブシステムによって割り当てられたメモリーのブロックを割り振り解除します。 Pointer パラメーターが malloc サブシステムによって以前に割り当てられたアドレスでない場合、または Pointer パラメーターが既に割り当て解除されている場合は、未定義の結果が発生します。 Pointer パラメーターが NULL の場合、アクションは発生しません。

パラメーター (free)

項目 説明
ポインター malloc サブシステムによって以前に割り当てられたスペースへのポインターを指定します。

戻り値 (フリー)

free サブルーチンは値を戻しません。 ゼロ以外の引数で正常終了すると、 realloc サブルーチンは、割り当てられた (おそらく移動された) スペースを指すポインターを戻します。 Size パラメーターが 0 で、 Pointer パラメーターが NULL でない場合、アクションは発生しません。

エラー・コード (フリー)

free サブルーチンは errnoを設定しません。

realloc (解放)

構文 (realloc)

#include <stdlib.h>
void *realloc (Pointer, Size)
void *Pointer;
size_t Size;

説明 (realloc)

realloc サブルーチンは、 Pointer パラメーターが指すメモリー・オブジェクトのサイズを、 Size パラメーターで指定されたバイト数に変更します。 ポインター は、 malloc サブシステム割り当てルーチンによって戻されたアドレスを指していなければならず、事前に割り振り解除されていてはなりません。 Pointer がこれらの基準を満たさない場合、未定義の結果が発生します。

メモリー・オブジェクトの内容は、古いサイズと新しいサイズのうち小さい方のサイズまで変更されません。 要求を満たすために現行メモリー・オブジェクトを拡大できない場合、 realloc サブルーチンは新しいメモリー・オブジェクトを獲得し、既存のデータを新しいスペースにコピーします。 その後、古いメモリー・オブジェクトが解放されます。 要求を収容するためにメモリー・オブジェクトを獲得できない場合、オブジェクトは変更されません。

Pointer パラメーターが NULL の場合、 realloc サブルーチンは同じサイズの malloc サブルーチンに相当します。

Size パラメーターが 0 で、 Pointer パラメーターが NULL でない場合、 realloc サブルーチンは同じサイズの free サブルーチンに相当します。

パラメーター (realloc)

項目 説明
ポインター malloc サブシステムによって以前に割り当てられたスペースへの ポインター を指定します。
Size メモリー・オブジェクトの新しいサイズをバイト単位で指定します。

戻り値 (realloc)

ゼロ以外の引数で正常終了すると、 realloc サブルーチンは、割り当てられた (おそらく移動された) スペースを指すポインターを戻します。 Size パラメーターが 0 で、 Pointer パラメーターが NULL 以外の場合、戻り動作は free サブルーチンの場合と同等です。 Pointer パラメーターが NULL で Size パラメーターがゼロでない場合、戻り動作は malloc サブルーチンの戻り動作と同等です。

エラー・コード (realloc)

項目 説明
ENOMEM 要求を処理するための十分なストレージ・スペースがありません。

calloc

構文 (calloc)

#include <stdlib.h>
void *calloc (NumberOfElements, ElementSize)
size_t NumberOfElements;
size_t ElementSize;

説明 (calloc)

callocサブルーチンは、NumberOfElementsオブジェクトを含む配列のスペースを確保する。 ElementSize パラメーターは、各エレメントのサイズをバイト単位で指定します。 配列が割り振られると、すべてのビットが 0 に初期化されます。

calloc サブルーチンへの連続呼び出しによって割り当てられるストレージの順序と連続性は、指定されていません。 戻されたポインターは、割り振られたスペースの最初 (最低) のバイト・アドレスを指しています。 割り振られたスペースは、どのタイプのデータにも使用できるように位置合わせされます。 calloc サブルーチンによって割り当てられたスペースがオーバーランすると、未定義の結果が生じます。

パラメーター (calloc)

項目 説明
NumberOfElements 配列内のエレメントの数を指定します。
ElementSize 配列内の各エレメントのサイズをバイト単位で指定します。

戻り値 (calloc)

正常終了すると、 calloc サブルーチンは、割り当てられたゼロで初期化された配列へのポインターを戻します。 要求されたサイズが 0 の場合、 calloc サブルーチンは通常の環境で NULL を返します。 ただし、プログラムがマクロ _LINUX_SOURCE_COMPAT を定義してコンパイルされた場合、 calloc サブルーチンは、サイズ 0 のスペースへの有効なポインターを返します。

何らかの理由で要求を満たすことができない場合、 calloc サブルーチンは NULL を返します。

エラー・コード (calloc)

項目 説明
ENOMEM 要求を処理するための十分なストレージ・スペースがありません。

mallopt

構文 (mallopt)

#include <malloc.h>
#include <stdlib.h>
int mallopt (Command, Value)
int Command;
int Value;

説明 (mallopt)

mallopt サブルーチンは、System V malloc サブルーチンとのソース・レベルの互換性のために提供されています。 mallopt サブルーチンは、以下のコマンドをサポートします。
表 1. コマンドと効果
コマンド 効果
M_MXFAST 0 他の malloc サブシステム・サブルーチンの前に呼び出されると、プロセスのデフォルト割り当てポリシーが使用可能になります。
M_MXFAST 1 他の malloc サブシステム・サブルーチンの前に呼び出されると、プロセスの 3.1 割り当てポリシーが使用可能になります。
M_DISCLAIM 0 デフォルト・アロケーターが使用可能になっているときに呼び出されると、プロセス・ヒープ内のすべての空きメモリーが解放されます。
M_MALIGN (M_MALIGN) N 実行時に呼び出された場合、デフォルトの malloc 割り振り位置合わせを値 Nに設定します。 N の値は、2 の累乗 (ポインターのサイズ以上) でなければなりません。

パラメーター (mallopt)

項目 説明
Command 実行する mallopt コマンドを指定します。
VALUE 配列内の各エレメントのサイズを指定します。

戻り値 (mallopt)

正常終了すると、 mallopt サブルーチンは 0 を戻します。 それ以外の場合は、1 が戻されます。 無効な位置合わせが要求された場合 (2 の累乗でない場合)、 mallopt は戻り値 1 で失敗します。ただし、 malloc への後続の呼び出しは影響を受けず、失敗した mallopt 呼び出しの前から位置合わせ値を提供し続けます。

エラー・コード (mallopt)

mallopt サブルーチンは errnoを設定しません。

mallinfo

構文 (mallinfo)

#include <malloc.h>
#include <stdlib.h>
struct mallinfo mallinfo();

説明 (mallinfo)

mallinfo サブルーチンを使用すると、 malloc サブシステムによって管理されるヒープに関する情報を入手することができます。

戻り値 (mallinfo)

mallinfo サブルーチンは、ヒープに関する関連情報と統計情報が入力された struct mallinfo型の構造体を戻します。 この構造体の内容は、 /usr/include/malloc.h ファイル内の struct mallinfo の定義を使用して解釈できます。

エラー・コード (mallinfo)

mallinfo サブルーチンは errnoを設定しません。

マルリンフォヒープ

構文 (mallinfo_heap)

#include <malloc.h>
#include <stdlib.h>
struct mallinfo_heap mallinfo_heap (Heap)
int Heap;

説明 (mallinfo_heap)

マルチヒープ・コンテキストでは、 mallinfo_heap サブルーチンを使用して、 malloc サブシステムによって管理される特定のヒープに関する情報を入手することができます。

パラメーター (mallinfo_heap)

項目 説明
ヒープ 照会するヒープを指定します。

戻り値 (mallinfo_heap)

mallinfo_heap は、ヒープに関する関連情報と統計情報が入力された struct mallinfo_heap型の構造体を戻します。 この構造体の内容は、 /usr/include/malloc.h ファイルの struct mallinfo_heap の定義を使用して解釈できます。

エラー・コード (mallinfo_heap)

mallinfo_heap サブルーチンは errnoを設定しません。

alloca

構文 (alloca)

#include <stdlib.h>
char *alloca (Size)
int Size;

説明 (alloca)

alloca サブルーチンは、 Size パラメーターで指定されたバイト数以上のメモリー・ブロックへのポインターを戻します。 スペースは、呼び出し元のスタック・フレームから割り当てられ、呼び出しサブルーチンが戻るときに自動的に解放されます。

alloca サブルーチンが IBM® XL C for AIX® コンパイラーでコンパイルされたコードで使用される場合、 alloca サブルーチンを参照する前に #pragma alloca をソース・コードに追加する必要があります。 あるいは、 -ma コンパイラー・フラグまたは <alloca.h> ヘッダー・ファイルを追加することもできます。

パラメーター (alloca)

項目 説明
Size 割り振るメモリーのサイズをバイト単位で指定します。

戻り値 (alloca)

alloca サブルーチンは、要求されたサイズのスペースへのポインターを戻します。

エラー・コード (alloca)

alloca サブルーチンは errnoを設定しません。

valloc

構文 (valloc)

#include <stdlib.h>
void *valloc (Size)
size_t Size;

説明 (valloc)

valloc サブルーチンは、バークレー互換性ライブラリー (libbsd.a) および libc.aの互換性インターフェースとしてサポートされます。 valloc サブルーチンは、割り当てられたメモリーが sysconf (_ SC_PAGESIZE) によって戻される値の倍数に位置合わせされることを除いて、 mallocと同じ効果を持ちます。

パラメーター (valloc)

項目 説明
Size 割り振るメモリーのサイズをバイト単位で指定します。

戻り値 (valloc)

正常終了すると、 valloc サブルーチンは、長さが Size バイトで、ページ境界に位置合わせされたメモリー・オブジェクトへのポインターを戻します。 valloc サブルーチンによって割り当てられたスペースがオーバーランすると、未定義の結果が生じます。

何らかの理由で要求を満たすことができない場合、 valloc は NULL を戻します。

エラー・コード (valloc)

項目 説明
ENOMEM 要求を処理するための十分なストレージ・スペースがありません。

位置合わせ (posix_memalign)

構文 (posix_memalign)

#include <stdlib.h>
int posix_memalign(void **Pointer2Pointer, Align, Size)
void ** Pointer2Pointer;
size_t Align;
size_t Size;

説明 (posix_memalign)

posix_memalign サブルーチンは、 Alignで指定された境界に位置合わせされた Size バイトのメモリーを割り当てます。 このメモリーのアドレスは、 Pointer2Pointerに保管されます。

パラメーター (posix_memalign)

項目 説明
Pointer2Pointer アドレスをコピーする場所を指定します。
位置合わせ 割り振られたメモリーの位置合わせをバイト単位で指定します。 Align パラメーターは、ポインターのサイズの 2 乗の倍数でなければなりません。
Size 割り振るメモリーのサイズをバイト単位で指定します。

戻り値 (posix_memalign)

正常に完了すると、 posix_memalign は 0 を返します。 正常に実行されなかった場合、エラーを示すエラー番号を戻します。

エラー・コード (posix_memalign)

項目 説明
EINVAL Align の値は、ポインターのサイズの 2 乗の倍数ではありません。
ENOMEM 要求を処理するための十分なストレージ・スペースがありません。