标题:求助 c程序设计语言上一个关于空间分配的函数不懂,求老司机带带
只看楼主
thematrix_
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-7-18
结帖率:0
已结贴  问题点数:10 回复次数:6 
求助 c程序设计语言上一个关于空间分配的函数不懂,求老司机带带
用alloc函数对一个大字符数组allocbuf中的空间进行分配
#define ALLOCSIZE 10000

static char allocbuf[ALLOCSIZE];
static char *allocp=allocbuf;   //下一个空闲位置     这是什么意思,这不是指的数组第一个位置吗

char *alloc(int *n)  //返回指向N个字符的指针
{
  if(allocbuf+ALLOCSIZE-allocp>=n)
    {allocp +=n;
     return allocp-n;
     }
  else return 0;
}
void afree(char *p)
{ if (p>=allocbuf&&p<=allocbuf +ALLOCSIZE)
       p=allocp;
}
搜索更多相关主题的帖子: 语言 空间 分配 函数 char 
2017-07-18 20:06
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:4 
表示第一次接触~标记一下~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-07-18 20:18
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:4 
static char *allocp=allocbuf;//初始化allocp, 指向allocbuf的首地址

char *alloc(int *n)  //返回指向N个字符的指针
{
  if(allocbuf+ALLOCSIZE-allocp>=n) //5    保证n是在缓存区内
    {allocp +=n;//6        //缓存指针向后移动n
     return allocp-n;//7        5、6、7行类型不匹配,n应该是int类型,不是指针类型
     }
  else return 0;
}


[此贴子已经被作者于2017-7-20 22:25编辑过]

2017-07-18 20:45
thematrix_
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-7-18
得分:0 
回复 3楼 ldsh304
static char *allocp=allocbuf;   //为什么指向下一个空闲位置     这是什么意思,这不是指的数组第一个位置吗
2017-07-18 20:50
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
原来这个是指allocm和afree的实现方法耶~看上去是栈空间分配的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-07-19 06:44
a1017075043
Rank: 2
来 自:广州
等 级:论坛游民
威 望:1
帖 子:50
专家分:63
注 册:2015-6-29
得分:4 
回复 4楼 thematrix_

1

我是小白。。。。
2017-07-19 14:43
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:0 
回复 4楼 thematrix_
static char *allocp=allocbuf;//  给allocbuf分配内存空间,此时allocbuf的所有空间都是空闲的,那么就让allocp指向allocbuf的首地址,即空闲位置

allocp +=n;//在allocp 向后移动时,使它他指向下一个空闲位置
2017-07-20 22:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479464-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015944 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved