📄 alloc.c
字号:
#include "alloc.h"#include "error.h"extern char *malloc();extern void free();#define ALIGNMENT 16 /* XXX: assuming that this alignment is enough */#define SPACE 2048 /* must be multiple of ALIGNMENT */typedef union { char irrelevant[ALIGNMENT]; double d; } aligned;static aligned realspace[SPACE / ALIGNMENT];#define space ((char *) realspace)static unsigned int avail = SPACE; /* multiple of ALIGNMENT; 0<=avail<=SPACE *//*@null@*//*@out@*/char *alloc(n)unsigned int n;{ char *x; n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */ if (n <= avail) { avail -= n; return space + avail; } x = malloc(n); if (!x) errno = error_nomem; return x;}void alloc_free(void *X){ char *x=X; if (x >= space) if (x < space + SPACE) return; /* XXX: assuming that pointers are flat */ free(x);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -