设为首页 加入收藏

TOP

[C解析之八] 动态内存管理
2014-11-23 19:05:13 来源: 作者: 【 】 浏览:13
Tags:解析 动态 内存 管理

C解析之八动态内存管理

前言:动态内存管理,C/C++迷人的魅力所在,只因,它可以让你对计算机的操控上升到近乎无限的程度
动态内存管理和指针,实现C/C++对内存的精准操控,这一特征让C/C++程序在空间消耗上的表现异常突出,一定层面上可以解释为什么C是底层系统开发语言的首选。大到操作系统任务,小到一个通讯录,都可以发现动态内存管理,如果你深入研究还会发现,动态内存管理发挥的作用无可替代。 1.动态内存管理与指针: 动态内存管理的主要函数malloc() / free()都需要指针的支持,关于指针可阅读【C解析之四】指针。C语言的内存分配机制(【C解析之三】C语言的内存分配)告诉我们,动态空间的申请是在堆区,malloc函数申请空间,free函数用于释放。 指针扮演一个什么样的角色?存储在静态区的全局变量与静态变量,栈区的局部变量(关于局部变量【C解析之五】函数:你不知道的事有相关的介绍)等都是先声明定义后使用,换句话说,这些变量都有名称,类型,通过名称可以使用这些变量。但在堆区通过动态分配申请的空间是没有名称,也没有类型的,通过指针利用这些空间似乎是唯一的选择。同时,申请的空间没有指定类型,赋值给指针之前需要强制转换。理解这两点就不难理解函数原型了,如下: \
2.malloc()开辟指定大小的存储空间: 用法:malloc(int size) ,size为需要开辟的字节数。 返回值:开辟空间的首地址。 3.free() 空间释放内存空间:
用法:free(void *p) , p为指向开辟空间的指针 返回值:无返回值。 下面是malloc()与free()使用的示例:
4.动态内存管理的优势
所谓动态内存管理,也指它能动态地满足对内存空间的需求。在很多情况下,我们并不知道该需要多少空间才能满足要求,比如记录班级学生成绩,有的班级人数多,有的则少,如果定义的数组过大则浪费了内存,过小则会出问题,这种情况下采用动态内存管理的方法,根据不同班级的人数开辟相应大小的空间,会让程序丝毫内存也不浪费。 链表或许是动态内存管理最佳释义,通过内存管理,链表可以存储从零个数据到无穷个(如果内存足够)数据,以后将会详细的介绍这部分内容。 下面是动态分配内存记录班级成绩并显示平均成绩的示例:

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言之预处理命令 下一篇十进制转换2-16进制(c语言算法实..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: