论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> 复习资料 >> IT正文
链表的C语言实现系列辅导:动态内存分配
 作者:佚名     2007-3-15 14:57:18        来源:不详  浏览次数:

    一、为什么用动态内存分配

  但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。

比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:

float score[30];

  但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?

  在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并不知道该班级的学生的人数,那么你就要把数组定义得足够大。这样,你的程序在运行时就申请了固定大小的你认为足够大的内存空间。即使你知道该班级的学生数,但是如果因为某种特殊原因人数有增加或者减少,你又必须重新去修改程序,扩大数组的存储范围。这种分配固定大小的内存分配方法称之为静态内存分配。但是这种内存分配的方法存在比较严重的缺陷,特别是处理某些问题时:在大多数情况下会浪费大量的内存空间,在少数情况下,当你定义的数组不够大时,可能引起下标越界错误,甚至导致严重后果。

  那么有没有其它的方法来解决这样的外呢体呢?有,那就是动态内存分配。

  所谓动态内存分配就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。从以上动、静态内存分配比较可以知道动态内存分配相对于景泰内存分配的特点:

  1、不需要预先分配存储空间;

  2、分配的空间可以根据程序的需要扩大或缩小。

  二、如何实现动态内存分配及其管理

  要实现根据程序的需要动态分配存储空间,就必须用到以下几个函数

  1、malloc函数

  malloc函数的原型为:

void *malloc (unsigned int size)

  其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。还有一点必须注意的是,当函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针。所以在调用该函数时应该检测返回值是否为NULL并执行相应的操作。

[1] [2] 下一页

责任编辑:lss
  相关新闻
经典的C程序案例
VFP表转换成SQL Server表的方法
链表的C语言实现系列辅导:单链表的实现
一名网管的CCIE考证亲历记
Exchange Server 的CDO对象集合二
Exchange Server 的CDO对象集合一
Exchange Server 的CDO对象集合三
链表的C语言实现系列辅导:单链表的查找运算
Oracle中表的连接及其调整
详解Java中的指针、引用及对象的clone
链表的C语言实现系列辅导:单链表的查找运算
链表的C语言实现系列辅导:单链表的实现
Oracle中表的连接及其调整
一名网管的CCIE考证亲历记
Apusic应用服务器的ClassLoader结构
详解Java中的指针、引用及对象的clone
水晶报表的jsp实现(开发工具:bea weblogic workshop)
VFP表转换成SQL Server表的方法
经典的C程序案例
Exchange Server 的CDO对象集合一
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号