C语言之动态函数的使用

1.使用动态内存的目标:

希望在程序执行的运行期间,可以动态的分配内存,由程序员手动的申请和释放内存;  ->  堆区

2. malloc函数

2.1函数的原型

#include <stdlib.h>
void *malloc(size_t size);

2.2函数的介绍

  函数的参数为要申请的内存大小,函数的返回值表示分配到内存的首地址,函数的功能就是申请一块指定大小的动态内存;如果申请失败,返回NULL,对于申请的内存不会进行初始化

2.3 举例

    i nt* p = malloc(sizeof(int));   //C编译能通过
    int* p = (int*)malloc(sizeof(int));   //C++检查严格
if(p == NULL){ // 申请空间失败}
    int* q = (int*)malloc(5*sizeof(int));
    char* str = (char*)malloc(sizeof(char));
    struct Student* ps = (struct Student*)malloc(sizeof(struct Student));

3.calloc 函数

 3.1 函数原型

  void *calloc(size_t nmemb, size_t size);

 3.2 函数描述

函数用于申请nmemb个数据,每一个数据的大小是size的内存空间,申请失败则返回NULL,申请到的内存做清零处理

4. realloc函数

  4.1 函数的原型

  void *realloc(void *ptr, size_t size);

 4.2 函数的描述

  第一个参数是原来内存的首地址,
  第二个参数是新空间的大小,
  返回值是新申请内存的首地址,如果申请失败,则返回NULL

4.3 注意:

  1)、如果新申请的内存空间比较大,多出来的内存空间不会被初始化,原来的数据不会改变
  2)、如果新申请的内存空间比较小,那么可能造成数据的丢失
  3)、先判断当前的指针是否有足够 的连续内存,如果有则扩大ptr指向的内存地址,并且将ptr返回,
  如果空间不够,先按照size指定的大小分配内存,将原来的数据拷贝到新内存区域中,释放原来的内存空间,同时返回新申请内存的首地址、

 4.4 特殊性

 1)、第一个参数为NULL,相当于malloc函数
 2)、第二个参数为0,相当于free函数

5.  free函数

内存泄露:如果申请的内存不去使用却没有释放,这块内存别的程序也无法使用

   5.1函数的原型:

     void free(void *ptr);

   5.2函数的描述

     函数的功能用于释放ptr所指向的内存区域

6.用途

1)、可以申请不定长的内存空间
2)、可以不受作用域的限定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值