
动态内存分配:
1.字符串存储在字符数组中,而且可能很难预测这些数组需要的长度。通过动态地分配字符串,可以推迟到程序运行时才作决定
2.对于较大型的程序来说,如果是静态内存分配,还没等程序运行完,内存已被占用,但如果使用动态内存分配,在使用完每一个内存空间后将其释放,执行下一段指令,可以显著提高程序运行效率
malloc()函数:
void *malloc(size_t size);//作用:申请number个int类型(4个字节)的空间
//返回值:若分配成功返回一个指向已分配的空间开头的指针
//若失败则返回一个空指针NULL
//因此在使用此函数时要判断申请内存是否成功
//size和size_t任何一个都不能为0.如果为0会发生未知错误
函数运用:
#include
#include
int main()
{
int number;
int *a;
int i;
printf("请输入数量:");
scanf("%d",&number);
a = (int*)malloc(number*sizeof(int));//由于malloc()函数的返回值为void型指针,(int*)
//强制将void型指针转换为int型指针
//分配number个int类型的空间即数组大小的空间,相当于创建一个a[n]数组
if(a!=NULL) //可以打成if(a),表示如果a这个地址存在或表示动态内存空间分配成功
{
for(i=0;i=0;i--)
{
printf("%d ",a[i]);
}
}
free(a); //释放空间
return 0;
}
calloc()函数:
void *calloc(size_t size);//与malloc函数类似
//区别为calloc函数在返回地址之前会
//将申请到的每个空间的每个字节都初始化为0
free()函数:
free();//作用:在用malloc函数申请了内存后,在使用后如果未释放会造成内存泄漏
//导致程序越来越慢
//同一个申请过的内存空间不能重复释放
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)