在线等待:用C或者C++语言,用数组模拟内存,实现一组内存管理方式。

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:26:06
用C或者C++语言,用数组模拟内存,实现一组内存管理方式。并注明编译环境.
前辈们帮帮忙,在线等待.

#include <stdio.h>
typedef unsigned int UINT32;
#define MCB_LEN 10 //内存记录块的总长度
#ifdef _DEBUG
#define debug_printf printf //调试信息输出
#else
#define debug_printf //以Release方式编译时不产生实际代码
#endif
typedef struct{
void *addr; //空闲空间或已使用空间的首地址
UINT32 size; //空闲空间或已使用空间的大小,以四字节为一个单位
UINT32 status; //状态标识 已使用(used=0) 未使用(unused=1)
}mem_ctrl_block;
enum{
used = 0 ,
unused = 1
};
static UINT32 _mem[0x1000]; //初始的可用内存空间
static mem_ctrl_block mcb[MCB_LEN+2]; //多分配两个mem_ctrl_block的空间,便于移动数组记录
static UINT32 mcb_count; //mcb记录总数,范围 1 - MCB_LEN
void mcb_info_out()
{
register UINT32 i;
printf("当前内存使用记录如下:\n");
for(i=0 ; i<mcb_count ; i++){
printf("起始地址:0x%p 空间大小:%8d字节 ",mcb[i].addr,(mcb[i].size<<2));
if(mcb[i].status){
printf("当前状态:空闲\n");
}
else{
printf("当前状态:占用\n&qu