C语言(动态内存分配)

C语言(动态内存分配),第1张

动态内存分配

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函数申请了内存后,在使用后如果未释放会造成内存泄漏
        //导致程序越来越慢 
        //同一个申请过的内存空间不能重复释放

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/921566.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存