第3篇部落格 动态内存与动态数组

很久没有好好看过书了,高考要来了,我也习惯性的烦躁了,根本静不下心。今天在寝室难得的好好静下来来了一会,今天看了一会,关于动态内存和动态数组。

    首先得从动态内存讲起,我知道这个东西很重要,不管对哪门语言都是一个很重要的内容。

  首先得说说为什么需要动态内存,这个在C语言中大致是主要是提高程序运行的效率,合理使用内存,如果程序过大而且都是静态的话就十分浪费资源,换言之就是可以手动释放:free()。

   讲到动态内存,就得说说malloc这个库函数,这是个C语言动态分配内存的函数。使用malloc这个函数首先的进行头文件声明#include<malloc。h>,还有malloc形参的问题,

它的形参必须是一个整形形参,例如malloc(10)这个语句就是向系统申请分配10个字节的动态内存,还有返回值是申请动态内存的首个字节的地址,这一点和数组的函数传递有点相似。

     再来就是说一下动态内存的释放,很简单就是free(p)/'/p为指向动态内存的指针指向的地址。

     对于动态内存还要说一点,既然是动态内存,就得体现动态这个特点,还得说说动态内存的扩充与缩减,这需要使用一个库函数recolloc(),使用方法为recolloc(p,100)//p为执行动态内存的指针,100是将内存变更为100字节的大小,也就是对动态内存原内存的更改,值得提醒的是原有动态内存的数据是会保留下来的,如果原来的内存为200字节,变更为100后,保留的值最初内存的前100字节的内存,原有内存后200字节内存就会丢失。

    再来说说动态数组,以前我也大概看了一下动态内存,但没弄透彻,使用后结果程序蹦了,有人告诉我关于内存的东西都是很危险的,处理不好会出大问题,结果的确是。动态内存的原来就是利用一个指针指向一个动态内存分配的内存,由动态内存存来,设定所需的内存大小,再用指针来指向不同的单位来实现。动态数组的类型决定了每个单位的大小,比如一个char数组每个单位就是1个字节,而int就需要4个字节,以此类推。

   简单动态内存示例:

int len;

int *p;

scanf("%d", &len);

p = (int *) malloc (4*len);//int *是强制类型转换,以明确动态数组的类型(分配的地址)

对于上程序段,p就相当于a【】中的a,而int* 就是类型int ;len就是数组的下标,而4*就是一个int类型的数组每个元素会占用4个字节为一个单元。

动态内存有其自身的优点:不需要事先定义,长度内存可以手动分配和释放,动态增减。还有个跨函数使用内存,这个还没搞懂。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值