Ошибка с выделением памяти malloc и free в многофайловом проекте

Появляется ошибка "вызвано исключение по адресу: нарушение прав доступа при записи по адресу" в программе, реализующей malloc и free. Основная проблема в том, что если соединить программу в одном файле программа работает, но при разделении на несколько(заголовок, функции и main) появляется исключение. Собрать программу в одном файле я не могу, т.к. преподаватель требует, чтобы он был разделён на несколько. Вот код:

Файл с функциями func.c

#include "func.h"

void* alloc(int size) {
    if (allocbuf + ALLOCSIZE - allocp >= size) {
        void* ptr = (void*)allocp;
        allocp += size;
        return ptr;
    }
    else
        return NULL;
}

void afree(void* p) {
    if (p >= (void*)allocbuf && p < (void*)(allocbuf + ALLOCSIZE))
        allocp = (char*)p;
}

Файл main.c

#include "func.h"

int main() {

    int* ptr1;

    ptr1 = (int*)alloc(sizeof(int));

    printf("Input something: ");
    scanf("%d", ptr1);

    printf("ptr1: %d\n", *ptr1);

    afree(ptr1);

    if (allocp == allocbuf)
        printf("Memory successfully freed\n");
    else
        printf("Memory not freed properly\n");

    return 0;
}

Файл заголовка func.h

#include <stdio.h>

#define ALLOCSIZE 1000  

static char allocbuf[ALLOCSIZE];
static char* allocp = allocbuf;

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