В языке программирования KR C описан распределитель памяти, но как его использовать? Как я могу улучшить его? какие существуют алготимы? Является ли это тривиальной версией malloc, которая показана?Использование распределителя памяти C?
#define ALLOCSIZE 10000
static char allocbuf[ALLOCSIZE];
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
return 0;
}
void afree(char *p) {
if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
allocp = p;
}
int main() {}
Конечно, вы можете использовать его, если сможете жить с его ограничениями. Предположим, что произойдет, если вы выберете() 'два раза и' afree() 'первый выбранный вами блок. – mfro