Ошибка с выделением памяти 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;