首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

锐捷笔试模拟内存管理,该如何解决

2012-03-01 
锐捷笔试模拟内存管理大概意思是:假设现在给你一个模拟内存空间char a[100](可以很大),现在要你写一个程序

锐捷笔试模拟内存管理
大概意思是:假设现在给你一个模拟内存空间char a[100](可以很大),现在要你写一个程序,实现一个malloc函数,原型为void *malloc(LEN),这个LEN空间从给定的char a[100]中获得。

[解决办法]
大概是这样,还有很多细节没有注意!
static int top = 99;
if (size == 0)
return 0;
if (top - size >= 0)
{
top -= size;
return &a[top];
}
else
{
return 0;
}
[解决办法]
完整实现还需要一个int len[LEN];(不需要用链表的)
 用来记录每次分配的内存大小,还要实现free.
 而且malloc和free的顺序必须对应!
 很简单,自己try一下
[解决办法]
可以参考这个
http://blog.csdn.net/ttlyfast/archive/2007/10/10/1818034.aspx
[解决办法]
设置一个链表存储每次用的位置 如果申请到了 
 1 2 3 4 5 6 7 8 9
 ‘\0’‘\0’‘\0’‘\0’‘\0’‘\0’‘\0’‘\0’‘\0’
申请一块内存
 1 2 3 4 5 6 7 8 9
‘h’‘e’ '\0’‘\0’‘\0’‘\0’‘\0’‘\0’‘\0’
再申请一块
1 2 3 4 5 6 7 8 9
‘h’‘e’ '\0’ ‘l’ ‘l’‘o’‘\0’‘\0’‘\0’
如果能申请就返回4的地址。

不知道这样对不对。。。

热点排行