今天就给大家简单说一下 四个动态内存管理函数
free 函数:释放或者回收开辟的内存空间!
1.malloc 函数:(开辟内存函数)(开辟堆区的内存空间)
void* malloc(size_t size);
参数是一个指定开辟内存空间的大小,返回值是一个地址,用指针接收!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* p=(int*)malloc(10*sizeof(int));
if(p==NULL)
{
printf("cuyowo");
}
else
{
int i=0;
for(i=0;i<10;i++)
{
*(p+i)=i;
}
for(i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
}
printf("\n");
free(p);
p=NULL;
return 0;
}
2、calloc 函数:(开辟内存函数)
(开辟堆区的内存,且在开辟的同时进行初始化 将所有元素初始化为0)
void* calloc(size_t mas,size);
C语言代码实现
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* p=(int*)calloc(10,4);
if(p==NULL)
{
printf("cuowu ");
}
else
{
int i=0;
for(i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
}
printf("\n");
free(p);
p=NULL;
return 0;
}
3、realloc函数:(调整开辟的动态内存大小)
当我们开辟的动态内存不够用时我们就需要调整一下 如:加大开辟空间的大小
用C语言代码实现:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* p=(int*)malloc(20);
if(p!=NULL)
{
int i=0;
for(i=0;i<5;i++)
{
*(p+i)=i;
}
}
int *prt=(int*)realloc(p,40);
if(prt!=NULL)
{
prt=p;
int i=0;
for(i=5;i<10;i++)
{
*(p+i)=i;
}
for(i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
}
printf("\n");
free(p);
p=NULL;
return 0;
}