Распределитель памяти, распределение равными частями

# 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;
}

Здравствуйте, хочу сделать распределитель памяти на основе пула. Вроде все работает, но что-то смущает. Подскажите как лучше сделать.


Ответы (0 шт):