- calloc的使用:calloc的返回类型:void*,它的表达式:void* calloc (size_t num, size_t size);,它和malloc一样,都是申请一块连续的空间,只是不同的是calloc会在返回地址之前把申请的空间的每个字节初始化为全0。它的代码为:
#include<stdio.h> #include<stdlib.h> //calloc的使用 int main() { int* p = (int*)calloc(5, sizeof(int)); if (p != NULL) { int i = 0; for (i = 0; i < 5; i++) { printf("%d ", *(p + i)); } } free(p); p = NULL; return 0; }
这就是calloc的代码实现,所以如果我们对申请的内存空间的内容要求初始化,那么可以很⽅便的使⽤calloc函数来完成任务。
-
realloc的使用:realloc的返回类型也为:void*,它的表达式:void* realloc (void* ptr, size_t size);,它的理解是:这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到新的空间。ptr的意思是:调整内存的地址,size的意思是:调整之后新大小。它的代码为:
//realloc的使用
int main()
{
int* ptr = (int*)malloc(100);
if (ptr != NULL)
{
//业务处理
}
else
{
return 1;
}
//扩展容量
//代码1 - 直接将realloc的返回值放到ptr中
ptr = (int*)realloc(ptr, 1000);//这样可以吗?(如果申请失败会如何?)
//代码2 - 先将realloc函数的返回值放在p中,不为NULL,在放ptr中
int* p = NULL;
p = realloc(ptr, 1000);
if (p != NULL)
{
ptr = p;
}
//业务处理
free(ptr);
return 0;
}
这就是realloc的代码。