Code: Alles auswählen
#include <stdio.h>
#define RAM_SIZE 1024*1024
#define SEG_SIZE 1024
#define SEG_N RAM_SIZE/SEG_SIZE
#define FREE_LIST_FULL -1
char RAM [RAM_SIZE];
char freelist [SEG_N];
void initfreelist () {
int i;
for (i = 0; i < SEG_N; i++)
freelist [i] = 0;
}
int alloc_mem () {
int i;
for (i = 0; i < SEG_N; i++)
if (freelist [i] == 0) {
freelist [i] = 1;
return (i*SEG_SIZE);
}
else
return FREE_LIST_FULL;
}
void free_mem (int seg) {
freelist [seg%SEG_N] = 0;
return;
}
int main (void) {
initfreelist ();
/* ... */
return 0;
}