日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




メモリの領域を割り当てます。これらの関数は AST リエントラントです。

形式

#include <stdlib.h>

void *malloc (size_t size);

関数バリアント malloc関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _malloc32_malloc64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.9 節を参照してください。

引数



size

割り当てる合計のバイト数。

説明

malloc関数は,引数として指定されたバイト数の,連続したメモリ領域を割り当てます。スペースの初期化は行われません。

  注意
mallocルーチンはシステム・ルーチン LIB$VM_MALLOC を呼び出します。 LIB$VM_MALLOC はメモリを割り当てるための汎用ルーチンとして設計されており,幅広いシナリオでブロックの割り当てと再割り当てを効率的に行う目的に呼び出されます。最も一般的な用途は,比較的小さなメモリ・ブロックの管理ですが,これらの状況でのメモリ割り当ての最も重要な側面は効率性です。

LIB$VM_MALLOC は,大きなブロックの分割と隣接するブロックのマージのためにヒープ・ストレージが使い尽くされた場合には,独自の空きスペースを使って要求の処理を行います。メモリはフラグメント化され,未使用ブロックが残ることがあります。ヒープ・ストレージが使い尽くされると,LIB$VM_MALLOC は要求を満たすために独自の空きスペースとマージ済みブロックを管理しますが,さまざまなサイズのメモリ割り当てが行われると,どうしても未使用のブロックが生じます。

LIB$VM_MALLOC はすべての状況で最適な対応を行えるわけではないので,メモリ使用上の特殊なニーズがある場合には,プログラマは独自のメモリ管理を行うようにしてください。これにより,個々のアプリケーションでメモリを最適に使用することができます。

『OpenVMS Programming Concepts Manual』は,使用可能ないくつかのメモリ割り当てルーチンについて解説しています。これらは 3 つの階層レベルにグループ化されています。

  1. 一番上のレベルには, RTL ヒープ管理ルーチンの LIB$GET_VM と LIB$FREE_VM があります。これらは,任意のサイズのメモリ・ブロックの割り当てと解放を行うメカニズムを提供しています。またこのレベルには,LIB$CREATE_VM_ZONE などのように,ゾーンの概念に基づくルーチンがあります。

  2. 次のレベルには, RTL ページ管理ルーチンの LIB$GET_VM_PAGE と LIB$FREE_VM_PAGE があります。これらは,指定された数の連続したページを割り当てます。

  3. 一番下のレベルには, $CRETVA や $EXPREG などのメモリ管理システム・サービスがあります。これらを使用すると,アドレス空間の割り当てを細かく制御することができます。ただしこのレベルでは,プログラマが割り当てを正確に管理する必要があります。

一度に割り当てられる最大メモリ量は 0xFFFFD000 に制限されます。


戻り値

x クォドワード境界 (Alpha only) またはオクタワード境界 (Integrity only) に配置された第 1 バイトのアドレス。
NULL 関数が十分なメモリを割り当てられなかったことを示します。 errno は ENOMEM に設定されます。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.