[求助]这个我不太理解
题目:编写一个函数alloc(n),用来在内存区新开辟一个连续的空间(n个字 节)。此函数的返回值是个指针,指向新开辟的连续空间的起始地址。再写一个函数free( p),将地址p的各单元释放(不能再被程序使用,除非再度开辟)。程序如下:
#define NULL 0
#define ALLOCSIZE 1000
char allocbuf[ALLOCSIZE];
char *allocp=allocubuf;
char *alloc(int n)
{
if(allocp+n<=allocbuf+ALLOCSIZE)
{
allocp+=n;
return(allocp-n);
}
else
return(NULL);
}
free(char *p)
{
if(p>=allobuf&&p>allocbuf+ALLOCSIZE)
allocp=p;
}
假如,调用时用以下语句:
pt=alloc(n); 这个开辟我懂但 free(n)中的if不懂呀if(p>=allobuf&&p>allocbuf+ALLOCSIZE)会同
时大于allobuf与allocbuf+ALLOCSIZE吗?还有释放之后,好像没有真的释放!