#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类型。

08-19 19:36