实现的原理是将内存分成小的片段进行管理,代码如下: #define MEM_BLOCK_SIZE 4096 #define MEM_LARGE_BLOCK_THRESHOLD 40960 //>MEM_LARGE_BLOCK_THRESHOLD :requested size is large block #define MEM_BASE_ADDRESS (0x90000000) #define MEM_ALLOC_TABLE_FIRST_ENTRY 0 #define MAX_MEM_SIZE 7*1024*1024 #define MEM_ALLOC_TABLE_SIZE (MAX_MEM_SIZE/MEM_BLOCK_SIZE) static INT16 memory_map[MEM_ALLOC_TABLE_SIZE]; static char isMemoryManagementReady=0; void *memset(void *s, int c, size_t count) { char *xs = s; while (count--) *xs++ = c; return s; } INT32 ssd_mem_init(void) { memset(memory_map, 0, sizeof(memory_map)); isMemoryManagementReady=1; } INT16 ssd_mem_percentage_used() { int used=0; int i; for(i=0;i<MEM_ALLOC_TABLE_SIZE;i++) { if(memory_map[i]) { used++; } } return used*100/MEM_ALLOC_TABLE_SIZE; } //return -1:FAIL //>=0: return