函数头文件位置:
#include <stdlib.h>
1、malloc函数
原型:
void *malloc(unsigned int num_bytes)
功能:申请内存空间
参数:
num_byte:申请的空间大小
返回值:
成功:返回分配的空间地址
失败:返回空指针 NULL
例如:
int *p = (int )malloc(20sizeof(int))
2、calloc函数
原型:void *calloc(size_t n, size_t size)
功能:申请内存空间
参数:
n:存储单元数量
size:存储单元的大小(以字节为单位)
返回值:
成功:返回分配的空间地址
失败:返回空指针 NULL
例如:
int *p = (int *)calloc(20, sizeof(int))
注:
malloc申请后空间的值是随机的,并没有进行初始化,而calloc却在申请后,会对空间进行初始化,并设置值为0
3、realloc函数
void *realloc(void *ptr, size_t new_Size)
功能:用于更改已经配置的内存空间
参数:
ptr:指向原来空间基址的指针
new_size:新分配的内存大小,其值可比原内存大或小
返回值:
成功:返回重新分配的空间地址
失败:返回空指针 NULL
注:
1)如果 size 值比原分配的内存空间小,内存内容不会改变(即新内存保持原内存的内容),且返回的指针为原来内存的首地址(即 ptr)。
2)如果 size 值比原分配的内存空间大,则 realloc 不一定会返回原来的指针,原内存的内容保持不变,但新多出的内存则设为初始值。
注:以上三个函数使用完后需要用free 释放,并置为null
4、alloca
原型:void * alloca (size_t size);
功能:是从栈中分配内存空间
参数:分配的空间大小
返回值:
成功:返回首地址
失败:返回NULL
注: alloca 是从栈中分配内存空间,因此它会自动释放内存空间,而无需手动释放。