# Shinobi Library

1998/10/4

# メモリマネジメント関数

## 0.概要

> OSの介在しないSHINOBIライブラリ下において、メモリの管理を行います。
> 初期化関数以外の仕様は、関数自体の名前が異なる以外は、C標準関数の「malloc」と同一です。
> 仕組みの詳細については、こちらをご覧ください。

## 1.データ型

## 2.関数仕様

### 2.1関数一覧

関数 | 機能
--- | ---
syMallocInit | メモリ管理関数の利用するメモリエリアの確保と宣言
syMalloc | メモリの確保
syFree | メモリの開放
syMallocStat | 取得可能な最大連続メモリサイズ及び空き領域サイズの取得
syMallocFinish | Mallocシステムの終了

### 2.1関数API

## syMallocInit

［関数］
  Void syMallocInit(Void *heap, Uint32 size);
［入力］

heap
  管理を任せる領域の先頭アドレス
size
  管理を任せるサイズ

［出力］
  なし
［戻値］
  なし
［機能］
  syMalloc ライブラリに管理を任せる領域を指定し、ライブラリを初期化します。
  本関数は、sbInitSystem関数内で実行されます。
  sbInitSystem関数でのデフォルト値は以下の通りです。

  ヒープ領域の先頭アドレス：Bセクションの終わり
  ヒープのサイズ ：メモリの最後まで

［注意点］
  本関数は、Bセクション以降をメモリアロケート空間と見なし、メモリの内容を初期化します。
  もし、Bセクション以降にユーザセクションが存在していた場合、そこを初期化してしまいます。
  ユーザセクションを割り当てる際は、必ずBセクションよりも手前に置く必要があります。

## syMalloc

［関数］
  Void *syMalloc(Uint32 size);
［入力］

size
  要求するサイズ（byte)

［出力］
  なし
［戻値］
  確保した領域へのポインタ
  NULL の場合は、確保失敗

［機能］
  Cの標準関数のmalloc(size) と同じです。
  本関数は必ず32バイトアラインメントでメモリを確保します。
  データサイズを32バイトバウンダリで定義する事で、メモリ効率のよいメモリアロケーションが可能です。

## syFree

［関数］
  Void syFree(void *ap);
［入力］
  開放したい領域を示すポインタ
［出力］
  なし
［戻値］
  なし
［機能］
  free(*ap)と同じ

## syMallocStat

［関数］
  Void syMallocStat( Uint32 *free, Uint32 *size );
［入力］

free
  利用可能なヒープの残り
size
  一回の確保で可能な最大サイズ

［出力］

free
  利用可能なヒープの残り
size
  一回の確保で可能な最大サイズ

［戻値］
  なし
［機能］
  syMallocInitで確保したヒープのうちで未使用の領域の総和および、一回のsyMallocで獲得可能な最大サイズを取得します。

## syMallocFinish

［関数］
  Void syMallocFinish
［入力］
  なし
［出力］
  なし
［戻値］
  なし
［機能］
  Mallocシステムを終了します。その際にsyMallocInitで確保したヒープは開放されます。

オーバービューに戻る
TOPに戻る