Распределитель памяти, распределение равными частями
# include <stdio.h>
# include <stdlib.h>
# include <assert.h>
# define CAP 400
int Mem[CAP] = {0}; // Инициализирую массив нулем
size_t allmem = 0; //
void *CastMalloc (size_t size) {
assert(allmem + size <= CAP); // Проверяем, хватает-ли места
void *result = Mem + allmem; // Получаем смещение указателя (конец выделенных участков)
allmem += size; // Передвигаем указатель на n
Begin {size->size, start->result}; // Связываем дескриптор и размер с указателем
return result; // Возвращаем положение указателя
}
void *CastFree(int *p) {
if(p >= Mem && p < Mem + CAP) {
allmem = p; // Переносим указатель на начало блока
printf("Free: %p", p);
}
}
int main() {
int *a, n;
printf("intput numb element\n");
scanf("%d", &n);
a = CastMalloc(n*sizeof(int));
for (int i = 0; i < n; i++) {
a[i] = -1000 + rand() % ((1000+1) -(-1000));
printf("%d %p", a[i], &a[i]);
printf("\n");
}
printf("End array Mem adress: %p", Mem+CAP);
printf("\n");
printf("Sizeof: %d", n*sizeof(int));
printf("\n");
CastFree(a);
return 0;
}
Здравствуйте, хочу сделать распределитель памяти на основе пула. Вроде все работает, но что-то смущает. Подскажите как лучше сделать.