C语言——分配内存

函数:malloc()和free()、calloc()和free()

        创建一个数组有三种方法:

        1.声明一个数组,声明时用常量表达式指定数组的维数,然后可以用数组名访问数组元素。int example[10];

        2.声明一个变长的数组,声明时用变量表达式指定数组维数,然后用数组名来访问数组元素。int example[n];

        3.声明一个指针,调用malloc(),然后使用指针来访问数组元素。double *example;example=(double *)malloc(30*sizeof(double));

        对应每一个malloc()调用,应该调用一次free()。函数free()的参数是先前malloc()返回的地址,它释放先前分配的内存。所分配内存的时间村调用malloc()分配内存开始,到调用free()释放内存以供再次使用。free()的参数应该是一个指针,指向由malloc()分配的内存块,不能使用free()来释放由其他方式分配的内存,在头文件stdlib.h中有malloc()和free()的原型,

        通过使用malloc(),程序可以在运行时决定需要多大的数组并创建它,同时stdlib.h中还有exit()函数的原型,用来在内存分配失败时结束程序。

        free()的重要性

        如果程序使用了malloc()之后就一直没有使用free()来释放内存,虽然指针会作为一个自动变量消失,但它所指向的内存任然存在,我们无法访问这些内存,因为地址不见了,由于没有调用free(),不可以再使用它,这样的话,如果循环调用malloc()而不使用free()最终会导致内存溢出,这类问题被称为内存泄露(memory leak),可以通过在函数末尾调用free()放置该问题出现。

        calloc():

        long * newmen;

        newmen=(long *)calloc(100,sizeof(long));

        函数calloc()还有一个特性:他将块中的全部位置都置为0(然而要注意,在某些硬件系统中,浮点值0不是用全部位为0来表示的)。

        函数free()也可以释放由calloc()分配的内存。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值