找回密码
 注册
查看: 1201|回复: 2

先看一下UNIX的源代码吧。经典!!

[复制链接]
发表于 2002-11-19 18:23:13 | 显示全部楼层 |阅读模式
摘自《莱昂氏UNIX源代码分析》
用最简单的代码实现强大的功能。现在很难找到这么艺术的代码了!

struct map
{
  char *m_size;
  char *m_addr;
};

malloc(mp,size)
     struct map *mp;
{
  register int a;
  register struct map *bp;

  for(bp=mp;bp->m_size;bp++)
    {
      if(bp->m_size>=size)
        {
          a=bp->m_addr;
          bp->m_addr=+size;
          if((bp->m_size=-size)==0)
            do{
              bp++;
              (bp-1)->m_addr=bp->m_addr;
            }
            while((bp-1)->m_size=bp->m_size);
          return(a);
        }
    }
  return(0);
}
发表于 2002-11-19 21:49:28 | 显示全部楼层

Re: 先看一下UNIX的源代码吧。经典!!

linux中的经典代码有的是。
回复

使用道具 举报

发表于 2002-11-27 14:45:07 | 显示全部楼层

Re: 先看一下UNIX的源代码吧。经典!!

[quote:9dcee8f53c="吴文官"]摘自《莱昂氏UNIX源代码分析》
用最简单的代码实现强大的功能。现在很难找到这么艺术的代码了!

struct map
{
  char *m_size;
  char *m_addr;
};

malloc(mp,size)
     struct map *mp;
{
  register int a;
  register struct map *bp;

  for(bp=mp;bp->m_size;bp++)
    {
      if(bp->m_size>=size)
        {
          a=bp->m_addr;
          bp->m_addr=+size;
          if((bp->m_size=-size)==0)
            do{
              bp++;
              (bp-1)->m_addr=bp->m_addr;
            }
            while((bp-1)->m_size=bp->m_size);
          return(a);
        }
    }
  return(0);
}[/quote]
建议版主作些工作,使贴出来的代码的缩进格式保持不变,本来好好的代码,这样显示就不好看了,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-5 21:52 , Processed in 0.031598 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表