#define ALLOCSZE 1000
static char allocbuf[ALLOCSZE]; /* storage for alloc */
static char *allocp=allocbuf; /* next free position */
char *alloc(int n) /* return pointer to n characters */
{
if(allocbuf+ALLOCSZE-allocp>=n)
{
allocp +=n;
return allocp-n;
}
else
return 0;
}
条件
( if(allocbuf+ALLOCSZE-allocp>=n))
中allocbuf的大小是否等于char的大小 最佳答案
sizeof(allocbuf)等于数组的大小,为1000。
在表达式allocbuf
中使用allocbuf+ALLOCSZE-allocp>=n
时,它将衰减为char指针,因此指针算法将是正确的。
当内存不足时,您的函数将返回0。
我建议您将返回值更改为NULL,并将函数参数的类型更改为size_t。而且不要忘记,从函数alloc()获得的内存只能用于char
类型。