我写了一个内存管理函数请各位指点
目的是为了统一管理动态内存申请
算法设计如下:
1 申请一个很大的内存块
2 每次用户申请就从其中划出一小块固定大小(32,64,128,256字节)内存出来
3 当使用完毕是回收这一小块以备下次使用
4 当所有的小块都回收完毕则释放一整块
请帮忙看看算法或者设计思想是否有不妥的地方
原代码:
头文件
#ifndef APMM1_H_
#define APMM1_H_
#define MM_TEST // for test mm model
#define MEMSET(a,b,c) memset(a,b,c)
typedef unsigned short INT16U;
typedef unsigned long INT32U;
/* define struct of mm info
*/
typedef struct _mm_slab
{
char *pStart ; //This slab start adress
struct _mm_slab *next; //pionter to next
INT16U nPiece ; //how many piece the slab include
INT16U nPieceSize; //size of piece
INT32U lUserInfo; //which piece are used (record by bit,0 can not use, 1 can using)
}sMM_slab;
typedef enum {
EMM_SIZE32 = 0, //分配 32 字节 内存单元
EMM_SIZE64, //分配 64 字节 内存单元
EMM_SIZE128, //分配 128 字节 内存单元
EMM_SIZE256 //分配 256 字节 内存单元
}eMm_size ;
int mm_init(void) ;
char *AP_Malloc(eMm_size etype) ;
void AP_Free(char *p,eMm_size etype) ;
#ifdef MM_TEST
int mm_test(void);
#endif
#endif