メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

# dkcMemoryPool.h

説明を見る。

    00001 #ifndef DKC_MEMORY_POOL_H
    00002 #define DKC_MEMORY_POOL_H
    00003
    00004 #include "dkcOSIndependent.h"
    00005
    00006
    00007 typedef struct dkc_SameObjectPoolNode{
    00008     struct dkc_SameObjectPoolNode *next;
    00009 }DKC_SAME_OBJECT_POOL_NODE;
    00010
    00011
    00012
    00013 typedef struct dkc_SameObjectPool{
    00015     size_t max_num;
    00017     size_t now_num;
    00019     size_t obj_size;
    00020
    00022     DKC_SAME_OBJECT_POOL_NODE *root;
    00023     DKC_SAME_OBJECT_POOL_NODE *tail;
    00024
    00025     DKC_ALLOC_FUNC_TYPE alloc_f;
    00026     DKC_FREE_FUNC_TYPE free_f;
    00027
    00028 }DKC_SAME_OBJECT_POOL;
    00029
    00030
    00031
    00038 DKC_EXTERN DKC_SAME_OBJECT_POOL *WINAPI
    00039     dkcAllocSameObjectPool(size_t object_size,size_t max_num,
    00040                                                 DKC_ALLOC_FUNC_TYPE alloc_f,DKC_FREE_FUNC_TYPE free_f);
    00041
    00042
    00043
    00046 DKC_EXTERN DKC_SAME_OBJECT_POOL *WINAPI dkcAllocSameObjectPoolAuto(size_t object_size);
    00047
    00048
    00049
    00051 DKC_EXTERN int WINAPI dkcFreeSameObjectPool(DKC_SAME_OBJECT_POOL **p);
    00052
    00053 /*
    00055 DKC_EXTERN int WINAPI
    00056     dkcSameObjectPoolInit(DKC_SAME_OBJECT_POOL *p,size_t object_size,size_t max_num,DKC_ALLOC_FUNC_TYPE func);
    00057
    00059 DKC_EXTERN int WINAPI dkcSameObjectPoolUninit((DKC_SAME_OBJECT_POOL *p,DKC_FREE_FUNC_TYPE func);
    00060 */
    00066
    00067 DKC_EXTERN void *dkcSameObjectPoolAlloc(DKC_SAME_OBJECT_POOL *p);
    00068
    00075
    00076
    00077 DKC_EXTERN void WINAPI dkcSameObjectPoolRecycle(DKC_SAME_OBJECT_POOL *p, void *pv);
    00078
    00079
    00080 DKC_EXTERN int WINAPI dkcSameObjectPoolReserve(DKC_SAME_OBJECT_POOL *p);
    00081
    00083 #define dkcSameObjectPoolFree(p) dkcFree((void **)&(p))
    00084
    00085 #if 0
    00086
    00087
    00088 typedef struct dkc_MemoryPool{
    00089     BYTE *mpool;
    00090
    00092     DKC_ARRAY_ONEBYONE *mAobo;
    00093
    00094 }DKC_MEMORY_POOL;
    00095
    00096
    00097 DKC_EXTERN DKC_MEMORY_POOL *WINAPI dkcAllocMemoryPool(size_t poolsize,UINT flag);
    00098
    00099 DKC_EXTERN int WINAPI dkcFreeMemoryPool(DKC_MEMORY_POOL **);
    00100
    00101
    00102 DKC_EXTERN void *WINAPI dkcMemoryPoolAlloc(size_t size);
    00103
    00104 DKC_EXTERN int WINAPI dkcMemoryPoolFree(void *p);
    00105
    00106 DKC_EXTERN int WINAPI dkcMemoryPoolSafeFree(void **pp);
    00107
    00108 #endif
    00109
    00110 #endif