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

# 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
    00033 DKC_EXTERN DKC_SAME_OBJECT_POOL *WINAPI
    00034     dkcAllocSameObjectPool(size_t object_size,size_t max_num,
    00035                                                 DKC_ALLOC_FUNC_TYPE alloc_f,DKC_FREE_FUNC_TYPE free_f);
    00036
    00037
    00038
    00041 DKC_EXTERN DKC_SAME_OBJECT_POOL *WINAPI dkcAllocSameObjectPoolAuto(size_t object_size);
    00042
    00043
    00044
    00046 DKC_EXTERN int WINAPI dkcFreeSameObjectPool(DKC_SAME_OBJECT_POOL **p);
    00047
    00048 /*
    00050 DKC_EXTERN int WINAPI
    00051     dkcSameObjectPoolInit(DKC_SAME_OBJECT_POOL *p,size_t object_size,size_t max_num,DKC_ALLOC_FUNC_TYPE func);
    00052
    00054 DKC_EXTERN int WINAPI dkcSameObjectPoolUninit((DKC_SAME_OBJECT_POOL *p,DKC_FREE_FUNC_TYPE func);
    00055 */
    00061
    00062 DKC_EXTERN void *dkcSameObjectPoolAlloc(DKC_SAME_OBJECT_POOL *p);
    00063
    00070
    00071
    00072 DKC_EXTERN void WINAPI dkcSameObjectPoolRecycle(DKC_SAME_OBJECT_POOL *p, void *pv);
    00073
    00074
    00075 DKC_EXTERN int WINAPI dkcSameObjectPoolReserve(DKC_SAME_OBJECT_POOL *p);
    00076
    00078 #define dkcSameObjectPoolFree(p) dkcFree((void **)&(p))
    00079
    00080 #if 0
    00081
    00082
    00083 typedef struct dkc_MemoryPool{
    00084     BYTE *mpool;
    00085
    00087     DKC_ARRAY_ONEBYONE *mAobo;
    00088
    00089 }DKC_MEMORY_POOL;
    00090
    00091
    00092 DKC_EXTERN DKC_MEMORY_POOL *WINAPI dkcAllocMemoryPool(size_t poolsize,UINT flag);
    00093
    00094 DKC_EXTERN int WINAPI dkcFreeMemoryPool(DKC_MEMORY_POOL **);
    00095
    00096
    00097 DKC_EXTERN void *WINAPI dkcMemoryPoolAlloc(size_t size);
    00098
    00099 DKC_EXTERN int WINAPI dkcMemoryPoolFree(void *p);
    00100
    00101 DKC_EXTERN int WINAPI dkcMemoryPoolSafeFree(void **pp);
    00102
    00103 #endif
    00104
    00105 #endif