1. void* malloc(size_t size);
2. void* realloc(void *ptr, size_t newsize);
如果newsize小于原来的size,在gcc上的测试,什么都没有发生,返回值等于传入的指针值,并没有缩小空间
如果可以直接在原来的内存向后扩充,则返回值与传入的指针值可能相同
3. void* calloc(size_t n, size_t size);
calloc会自动初始化内存为0,相当于void *p = malloc(n * size); memset(p, 0, n*size);
4. void* alloca(size_t size);
在栈上分配空间,不需要free,会在外层调用函数结束后自动释放