重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先我先介绍一下开劈动态内存的作用和好处,也就是为什么要有这个东西,大家都知道一般的定义数组的话在程序开始执行的话就已经固定无法改变,比如:如果想要定义整型变量n要开劈n个int类型的空间,显然传统方法是做不到的,那么就需要动态内存开劈来处理了(如果开辟n个int类型空间,只需要把下面例子中的10变为n即可)。学过c语言的人应该都知道利用c语言开劈动态内存的方式是使用函数malloc,calloc,realloc,这些函数的使用方法如下(以下只介绍数组的开辟和释放,单个变量的方法类似):
创新互联建站-专业网站定制、快速模板网站建设、高性价比榆次网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式榆次网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖榆次地区。费用合理售后完善,十年实体公司更值得信赖。int *p=(int*)malloc(10*sizeof(int));
这段代码表示在堆上开劈10个int类型的内存空间,不初始化,并且返回第一个位置的地址给指针变量p,使用时有两种方法:
for(int i=0;i<10;i++)
{
p[i]=i;//或者*(p+i)=i;
}
这两种方法都可以访问刚才开劈的空间,来改变内存中的值。
int *p=(int*)calloc(10,sizeof(int));
这段代码表示在堆上开劈10个int类型的内存空间,初始化每个值为0,并且返回第一个位置的地址给指针变量p,使用时有两种方法同上。
int *p=(int*)realloc(p,20*sizeof(int));
这段代码表示把刚才在堆上开劈10个int类型的内存空间给改变了扩展为20个int类型的内存空间,并且刚才赋值的前面内存空间的元素的值不变,如果在刚才开劈的空间后不足40个空间,那么则会另找一个内存足够装下这个范围的空间,把这个空间的值拷贝过去,并且删除这个空间,然后返回第一个位置的地址给指针变量p。
也可以用realloc来开劈动态内存,代码如下:
int *p=(int*)realloc(NULL,20*sizeof(int));
注意一点,可能也会分配失败,那么则会返回空指针NULL,所以在使用前要判断是否开劈成功,代码如下:
int *p=(int*)malloc(10*sizeof(int));
if(p==NULL)
return 0;
for(int i=0;i<10;i++)
{
p[i]=i;
}
free(p);
p=NULL;
动态内存开劈完后内存空间并不会销毁,要么用free(p);来删除刚开劈的空间,并在后面把p=NULL;来防止p为野指针改变所指向的内容造成不必要的错误;
以上刘为c语言的动态内存开劈的内容,坐着很用心地去教会初学者,如果觉得写的好的话,可以给个关注点个赞,可以向我提问,我会认真回答,日后有什么不懂,想要更新的,也可以私我或在评论区评论,你的关注和点赞是我的动力,谢谢各位!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧