(1)Malloc内存分配
malloc函数,函数原型是void* malloc(unsigned int num_bytes);
内存空间大小是需要用户手动设定,不会对申请的内存空间的值进行初始化,所以使用过程中效率会比较高,所以当我们的软件不需要用不同编译器编译时,分配内存主要使用该函数。
(2)Calloc内存分配
calloc函数,函数原型是void* calloc(size_t n, size_t size);
系统可以计算用户想要的内存空间大小,会将内存空间的值进行初始化,所以使用过程中的效率会比较低下,一般只有软件需要用不同编译器进行编译时才会用到该函数。
(3)Realloc内存分配
realloc函数,函数原型是void* realloc(void* ptr, size_t new_Size);
用于对动态内存进行扩容(当申请的动态空间不够使用时,进行空间扩容操作),参数ptr指向原来空间基地址的指针,new_size是需要扩容的空间大小
(4)Valloc内存分配
valloc函数,函数原型void* valloc(size_t size);
需要手动指定分配的内存空间大小,使用getpagesize() 获取的页大小作为对齐长度,使用memalign分配内存。实现如下所示:
(5)free释放内存
free函数,函数原型void* free(void *ptr);
该函数用来释放calloc、malloc、realloc所分配的内存空间,如果释放的是一个未分配内存的空指针,则不会执行任何操作。