ヒープ

ヒープに関するAPIは、割り込み禁止状態で動作します。 割り込み処理中では呼び出さないでください。

コアサービスのヒープはコアサービス内でも使用するため、大量のメモリを 動的に確保する場合は、別の領域にメモリを確保し、SOLID_heap_XXX関数を 使用してください。

API

SOLID_malloc

void *SOLID_malloc(size_t size)

コアサービスのヒープ領域から、メモリを確保します。

パラメータ:size – 確保する領域のサイズ(byte)
戻り値:
  • NULL: 確保失敗
  • それ以外: 確保したメモリへのポインタ

SOLID_free

void SOLID_free(void *ptr)

SOLID_malloc(),SOLID_realloc(),SOLID_calloc() で確保したメモリを解放します。

パラメータ:ptr – 解放するメモリへのポインタ

SOLID_realloc

void *SOLID_realloc(void *ptr, size_t size)

SOLID_malloc() で確保したメモリの割り当てを変更します。

パラメータ:
  • ptr – 変更するメモリへのポインタ
  • size – 変更する領域のサイズ(byte)
戻り値:

  • NULL: 再割り当て失敗
  • それ以外: 再割り当てしたメモリへのポインタ

SOLID_calloc

void *SOLID_calloc(size_t n, size_t size)

コアサービスのヒープ領域から、メモリブロックを確保して、ゼロクリアを行います。

パラメータ:
  • n – 確保するブロック数
  • size – 確保するブロックの1つあたりのサイズ(byte)
戻り値:

  • NULL: 確保失敗
  • それ以外: 確保したメモリブロックへのポインタ

SOLID_heap_create

void *SOLID_heap_create(void *mempool, size_t size)

指定されたメモリをヒープ領域として初期化する。

パラメータ:
  • mempool – ヒープとして使用する領域へのポインタ
  • size – ヒープサイズ
戻り値:

  • NULL: 確保失敗
  • それ以外: ヒープ領域のポインタ

SOLID_heap_destroy

void SOLID_heap_destroy(void *heap)

ヒープ領域を解放する。

パラメータ:heap – ヒープ領域へのポインタ

SOLID_heap_alloc

void *SOLID_heap_alloc(void *heap, size_t size)

指定されたヒープ領域からメモリを確保する。

パラメータ:
  • heap – ヒープ領域へのポインタ
  • size – 確保するサイズ(byte)
戻り値:

  • NULL: 確保失敗
  • それ以外: 確保したメモリへのポインタ

SOLID_heap_align

void *SOLID_heap_align(void *heap, size_t align, size_t size)

指定されたヒープ領域からアライメントを指定してメモリを確保する。

パラメータ:
  • heap – ヒープ領域へのポインタ
  • align – アライメント(byte)
  • size – 確保するサイズ(byte)
戻り値:

  • NULL: 確保失敗
  • それ以外: 確保したメモリへのポインタ

SOLID_heap_free

void SOLID_heap_free(void *heap, void *ptr)

SOLID_heap_alloc(), SOLID_heap_align()で確保したメモリを解放する。

パラメータ:
  • heap – ヒープ領域へのポインタ
  • ptr – 解放するメモリへのポインタ