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

malloc.c

malloc.c [詳細]

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

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

ソースコードを見る。

マクロ定義

#define STATE   dkcstd_malloc_state_obj

関数

DKCSTD_MALLOC_STATEdkcstd_malloc_init (size_t init_size, size_t expand_size)
int dkcstd_malloc_end ()
DKCSTD_MALLOC_STATEdkcstd_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.c13 行で定義されています。

参照元 dkcstd_get_malloc_state(), dkcstd_malloc_end(), と dkcstd_malloc_init().


関数

static DKC_INLINE void* aligned_free_calc void *  a  )  [static]
 

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

参照元 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.c61 行で定義されています。

参照先 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.c99 行で定義されています。

参照先 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.c85 行で定義されています。

参照先 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.c104 行で定義されています。

参照先 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.c47 行で定義されています。

参照元 dkcstd_aligned_free().

00047                          {
00048     dkcstdFREE_BASE(p);
00049 }

DKCSTD_MALLOC_STATE* dkcstd_get_malloc_state  ) 
 

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

参照先 STATE.

00033                                               {
00034     return &STATE;
00035 }

void* dkcstd_malloc size_t  size  ) 
 

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

参照先 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.c24 行で定義されています。

参照先 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.c16 行で定義されています。

参照先 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.c52 行で定義されています。

参照先 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.c11 行で定義されています。


dkutil_cstdに対してSat Sep 10 09:19:23 2005に生成されました。  doxygen 1.4.4