#define ALLOCSIZE 10000 /* size of available space */
static char allocbuf[ALLOCSIZE]; /* storage for alloc */
static char *allocp = allocbuf; /* next free position */
char *alloc(int n) /* return pointer to n characters */
{
if (allocbuf + ALLOCSIZE - allocp >= n) { /* it fits */
allocp += n;
return allocp - n; /* old p */
} else /* not enough room */
return 0;
}
void afree(char *p) /* free storage pointed to by p */
{
if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
allocp = p;
}
До сих пор я понял, что целью распределения памяти является сохранение эффективности программы. Не объявлял бы массив allocbuf занимать все это пространство и побеждать цель? Я искренне благодарю всех, кто отвечает.Какова цель распределения памяти LIFO с массивом в c?
Ваш код не имеет распределения памяти LIFO, он просто выделяет все это с самого начала. – bluehallu
Единственная «цель» здесь - сохранить код простым. Это очень опасный код. –