C语言的动态分配内存

本文介绍了C语言中动态内存分配的概念,包括静态内存分配与动态内存分配的区别,重点讲解了动态内存分配的栈和堆区特点。文章还讨论了静态和动态内存分配的优缺点,并详细阐述了动态内存分配函数malloc()、calloc()、realloc()和free()的使用及注意事项。
摘要由CSDN通过智能技术生成

C语言的动态分配内存

静态内存分配

​ 定义:在C语言的程序空间中,可知代码区、常量区、全局数据区的内存在程序启动时就已经分配好了,这些地址空间大小固定,不能由程序分配和释放,只能等程序运行结束由系统来进行回收。

动态内存分配

​ 定义:栈区和堆区的内存在程序运行期间可以根据实际需求来分配和释放,不用在

程序刚启动时就分配内存。

栈和堆的区别

  • 栈区内存由系统分配和释放;堆区内存由程序员掌控。
  • 程序启动时会为栈区分配一块大小适当的内存,再向这块已有内存中写入数据时,不会涉及内存的分配和释放,所以栈内存的分配效率要高于堆。

两种方法的优缺点

  • 静态方法速度快,少去了向操作系统申请内存的时间,但是对内存的管理不够灵活,不能控制数据的作用范围,不能使用较大的内存。
  • 动态内存对内存的管理更加灵活和高效,需要多少内存就使用多少内存,用完就可回收。

动态内存分配函数

  1. malloc()

    原型:void* malloc (size_t size);

    作用:在堆区分配 size 字节的内存空间。

    返回值:成功返回分配的内存地址,失败则返回NULL。

    注意:分配内存在动态存储区(堆区),手动分配,手动释放,申请时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值