1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include <u.h> #include <libc.h> void* listalloc(long, long); void * listalloc(long n, long size) { char *p, *base; size = (size+sizeof(ulong)-1)/sizeof(ulong)*sizeof(ulong); p = base = malloc(n*size); while(--n > 0){ *(char**)p = p+size; p += size; } *(char**)p = 0; return base; }