含义:根据需要分配空间,而不是一开始就固定一个空间大小
1.malloc()、calloc()、realloc()和free()
1.1 malloc()
void* malloc(size_t size)
含义:malloc()是c语言提供的一个开辟动态内存空间的函数,这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针
使用:
(1)如果开辟成功,则返回一个指向开辟好空间的指针
(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查
(3)返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体类型在使用的时候由使用者自己决定
(4)如果参数size为0,malloc的行为是标准还是未定义的,取决于编译器
(5)malloc()函数不会将其开辟的空间初始化,上面放的是随机值
#include<stdlib.h>
int main(void)
{
int* p = malloc(10*sizeof(int));
if (p == NULL)
{
printf("开辟失败");
return;
}
free(p);
p = NULL;
return 0;
}
1.2 calloc()
void* calloc(size_t num, size_t size)
含义:calloc()是c语言提供的一个开辟动态内存空间的函数,这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针
使用:
(1)如果开辟成功,则返回一个指向开辟好空间的指针
(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查
(3)num是开辟的空间个数,size是开辟的空间的类型大小。如calloc(10, sizeof(int))就是开辟10个int类型的空间
(4)返回值的类型是void*,所以calloc函数并不知道开辟空间的类型,具体类型在使用的时候