1个回答
展开全部
allocbuf是一个大小为ALLOCSIZE(10000)的数组,allocbuf表示首地址,allocbuf+ALLOCSIZE表示尾地址(其实allocbuf+ALLOCSIZE-1才是真正的尾地址,这里为了方便讲解才这样说的),程序中allocp初始化时指向allocbuf,即首地址。把这个搞清楚,现在我们来分析以下你划线的这条语句:
1. 假设allocbuf的地址为0,则allocbuf+ALLOCSIZE = 10000;
2. 假设此时allocp = 3800;
根据以上假设我们可以推断出可用空间还剩余:
10000 - 3800 = 6200; (1)
因为allocbuf+ALLOCSIZE = 10000,allocp=3800;所以(1)式可以写成:
allocbuf + ALLOCSIZE - allocp = 6200;(2)
现在我们再假设n = 5000;则有:
allocbuf + ALLOCSIZE - allocp = 6200 >= n;(3)
根据(3)式得出结论:还有足够的空间可使用,析毕。
下面给出一张图助你理解:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询