メインページ | アルファベット順一覧 | データ構造 | ファイル一覧 | データフィールド | グローバル | 関連ページ

# malloc.c

malloc.c [詳細]

`#include "malloc.h"`
`#include "memory.h"`

malloc.cのインクルード依存関係図

ソースコードを見る。

## マクロ定義
#define | STATE dkcstd_malloc_state_obj
## 関数
DKCSTD_MALLOC_STATE * | dkcstd_malloc_init (size_t init_size, size_t expand_size)
int | dkcstd_malloc_end ()
DKCSTD_MALLOC_STATE * | dkcstd_get_malloc_state ()
void * | dkcstd_malloc (size_t size)
void | dkcstd_free (void *p)
void * | dkcstd_realloc (void *memblock, size_t size)
static DKC_INLINE void * | aligned_malloc_calc (void *a)
static DKC_INLINE void * | aligned_free_calc (void *a)
void * | dkcstd_aligned_malloc (size_t size)
void | dkcstd_aligned_free (void *a)
void * | dkcstd_aligned_realloc (void *memblock, size_t size)
## 変数
DKCSTD_MALLOC_STATE | dkcstd_malloc_state_obj

## 説明

malloc.c

作者:
  d金魚

から:
  2005/01/17

malloc.c で定義されています。

## マクロ定義

#define STATE dkcstd_malloc_state_obj

| malloc.c の 13 行で定義されています。 参照元 dkcstd_get_malloc_state(), dkcstd_malloc_end(), と dkcstd_malloc_init().

## 関数

static DKC_INLINE void* aligned_free_calc | ( | void * | a | ) | `[static]`

| malloc.c の 76 行で定義されています。 参照元 dkcstd_aligned_free(), と dkcstd_aligned_realloc().
    00076                                                   {
    00077     BYTE *p = a;
    00078     uint32 *pb;
    00079     void *f;
    00080     pb = (uint32 *)( (BYTE *)(p - sizeof(void *)) );
    00081     f = (void *)(*pb);//ただのpbになっていた。○|￣|_
    00082     return f;
    00083 }

static DKC_INLINE void* aligned_malloc_calc | ( | void * | a | ) | `[static]`

| malloc.c の 61 行で定義されています。 参照先 dkcstd_pointer_align(), と dkcstdMALLOC_MEMORY_ALIGN. 参照元 dkcstd_aligned_malloc(), と dkcstd_aligned_realloc().
    00061                                                     {
    00062     BYTE *p = (BYTE *)a;
    00063     uint32 *op,*base = (uint32 *)p;
    00064     //assert(sizeof(uint32 *) == sizeof(void *));
    00065
    00066
    00067     p += sizeof(void *);
    00068     p = dkcstd_pointer_align(p,dkcstdMALLOC_MEMORY_ALIGN);
    00069
    00070     //最初のアドレスを保存
    00071     op = (uint32 *)( (BYTE *)(p - sizeof(void *)) );
    00072     *op = (uint32)base;
    00073     return p;
    00074 }

void dkcstd_aligned_free | ( | void * | a | ) |

| malloc.c の 99 行で定義されています。 参照先 aligned_free_calc(), と dkcstd_free().
    00099                                  {
    00100     a = aligned_free_calc(a);
    00101     dkcstd_free(a);
    00102 }

void* dkcstd_aligned_malloc | ( | size_t | size | ) |

| malloc.c の 85 行で定義されています。 参照先 aligned_malloc_calc(), dkcstd_malloc(), dkcstdMALLOC_MEMORY_ALIGN, と NULL.
    00085                                         {
    00086     size_t ss = size +  dkcstdMALLOC_MEMORY_ALIGN + sizeof(void *);
    00087     void *p = dkcstd_malloc(ss);
    00088
    00089
    00090     if(NULL==p){
    00091         return NULL;
    00092     }
    00093     p = aligned_malloc_calc(p);
    00094
    00095     return p;
    00096 }

void* dkcstd_aligned_realloc | ( | void * | memblock,
|  | size_t | size
| ) |

| malloc.c の 104 行で定義されています。 参照先 aligned_free_calc(), aligned_malloc_calc(), と dkcstd_realloc().
    00104                                                         {
    00105     void *p;
    00106     //if(memblock){
    00107         memblock = aligned_free_calc(memblock);
    00108         p = dkcstd_realloc(memblock,size);
    00109         p = aligned_malloc_calc(p);
    00110     //}else{
    00111     //  p = aligned_malloc(size);
    00112     //}
    00113     return p;
    00114 }

void dkcstd_free | ( | void * | p | ) |

| malloc.c の 47 行で定義されています。 参照元 dkcstd_aligned_free().
    00047                          {
    00048     dkcstdFREE_BASE(p);
    00049 }

DKCSTD_MALLOC_STATE* dkcstd_get_malloc_state | ( |  | ) |

| malloc.c の 33 行で定義されています。 参照先 STATE.
    00033                                               {
    00034     return &STATE;
    00035 }

void* dkcstd_malloc | ( | size_t | size | ) |

| malloc.c の 40 行で定義されています。 参照先 NULL. 参照元 dkcstd_aligned_malloc(), と dkcstd_realloc().
    00040                                  {
    00041     if(0==size){
    00042         return NULL;
    00043     }
    00044     return dkcstdMALLOC_BASE(size);
    00045 }

int dkcstd_malloc_end | ( |  | ) |

| 戻り値: エラー時は-1 malloc.c の 24 行で定義されています。 参照先 STATE.
    00024                        {
    00025     int r;
    00026     if(STATE.alloc_count != 0){
    00027         r = -1;
    00028     }
    00029
    00030     return r;
    00031 }

DKCSTD_MALLOC_STATE* dkcstd_malloc_init | ( | size_t | init_size,
|  | size_t | expand_size
| ) |

| malloc.c の 16 行で定義されています。 参照先 STATE.
    00016                                                                             {
    00017     STATE.init_size = init_size;
    00018     STATE.expand_size = expand_size;
    00019     STATE.alloc_count = 0;
    00020
    00021     return &STATE;
    00022 }

void* dkcstd_realloc | ( | void * | memblock,
|  | size_t | size
| ) |

| malloc.c の 52 行で定義されています。 参照先 dkcstd_malloc(), と NULL. 参照元 dkcstd_aligned_realloc().
    00052                                                    {
    00053     if(NULL==memblock){
    00054         return dkcstd_malloc(size);
    00055     }
    00056     return dkcstdREALLOC_BASE(memblock,size);
    00057 }

## 変数

DKCSTD_MALLOC_STATE dkcstd_malloc_state_obj

| malloc.c の 11 行で定義されています。