alloc.c
来自「fget是一个小型的HTTP/FTP工具」· C语言 代码 · 共 33 行
C
33 行
#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 + =
减小字号Ctrl + -
显示快捷键?