操作系统原理-Linux下的内存分配与回收的管理
更新时间:2024-04-15 10:38:01 阅读量: 综合文库 文档下载
广州大学学生实验报告
开课学院及实验室:计算机科学与工程实验室 学院 计算机科学与教育软件学院 2014年11月19日 姓名 学号 年级/专业/班 实验课程名称 实验项目名称
操作系统实验 Linux下的内存分配与回收的管理 成绩 指导老师 张艳玲 一、实验目的
在Linux环境下利用下列系统调用malloc(), free()编写一段程序实现内存分配与回收的管理。 二、实验器材
1、计算机一台。 2、Linux
三、实验内容
1. 返回已分配给变量的内存地址; 2. 返回释放后的内存地址;
3. 释放已分配的内存空间后,返回释放内存后未使用内存的大小。
四、实验步骤、记录和结果
源代码有错,不能正常运行,使用纯C语言,修改正如下。
黄色底色的为新增代码 新增注释为绿色底色
#include
// int *string; char *string;
// string =(int*) malloc(10 );
string = (char*) malloc(sizeof(char)*10); if( string == NULL )
printf( \ else {
printf( \ /*printf (\// cout<<\ free( string );
printf( \ }
//int *stringy;
char *stringy;
//stringy =(int*) malloc(12 );
stringy =(char*) malloc(sizeof(char)*12 ); if( stringy == NULL )
printf( \ else {
printf( \ /*printf (\// cout<<\ free( stringy );
printf( \ }
return 0; }
编译运行结果如下图所示:
现在再修改下代码,输出两个变量的内存地址
#include
char *string = (char*) malloc(sizeof(char)*10);
if( string == NULL )
printf( \ else{
printf( \
printf(\ //输出string的内存地址 free(string);
printf( \
printf(\ //输出string释放后的内存地址 }
char *string_y = (char*) malloc(sizeof(char)*12 ); if( string_y == NULL )
printf( \ else{
printf( \
printf(\ //输出string_y的内存地址 free( string_y );
printf( \
printf(\ //输出string_y释放后的内存地址 }
return 0; }
再次运行,结果如下,可见他们的地址相同,这是因为string分配了内存空间后,释放了,被系统回收,所以string_y申请到的地址是前一个,也就是string的地址。
而执行free之后,地址依然不变是因为内存释放了,但是并没有将其设置为NULL。
再修改代码,将内存释放free放到程序结束前,即
free(string);
printf( \ free( string_y );
printf( \
return 0;
运行结果如下:
按理说string地址为10010 3630 ,占10字节,那么string_y地址应该是10010 363A才对,
原来这里跟内存地址对齐有关,由下图可见,当前系统默认是以8字节对齐,由于string占10字节,大于8却不足16,所以剩余的6字节被填充了。因此才会出现上面的结果。
再次修改代码,如下
#include
char *string = (char*) malloc(sizeof(char)*10);
if( string == NULL )
printf( \ else{
printf( \
strcpy(string, \ //复制文本到string
unsigned long unused = 10 - strlen(string); //获取未使用长度
free(string);
printf( \
printf(\ //输出未使用长度 }
return 0; }
运行结果如下:
可见还有4字节空间未使用。
心得体会
本实验虽然相对上一个实验提供的代码短很多,但是所涉及的知识覆盖面较广,在做实验的过程中也学到了不少知识。
正在阅读:
高中物理力学经典例题汇编303-08
优美的伤感文字02-14
祝福老师生日快乐的诗句大全精选02-24
操作系统课后习题答案211-25
物业接管验收后工程完善和工程遗留问题处理04-30
常德市城市总体规划(2009-2030)09-06
施工组织课程设计12-01
103规约的解释和举例03-17
- 2010全国高考数学(理)考试大纲
- 2016-2017学年江苏省无锡市高三(上)期末数学试卷和答案
- 2013年河南省专升本经济学考试真题
- 珠海万利达保护整定示例
- 60kV厂用电进线电源二次回路设计(1)(DOC) - 图文
- 2017最新二年级数学教师家长会发言稿
- 医院地震应急预案
- 小学化倾向在幼儿教育中的问题及对策
- 软件测试毕设论文 - 图文
- 2016年贵州省普通高中学业水平物理模拟试卷(解析版)
- 用友java面试题(附答案)
- 2005-2013年上海市大同中学杯初中物理竞赛初赛试卷及答案 - 图文
- 深圳市国家税务局办税指南
- 进出口货物征税管理办法条文及释义
- 科目一理论考试题900道 - 图文
- 机械制造与自动化本科毕业设计论文-数控车床的改造
- 2016年五年级上册写字教案完整通过版
- 涉外谈判与国内谈判有何异同点,简要说明。(出自第七单元)
- 小学班主任培训讲稿
- 2011届高考复习最新6年高考4年模拟分类汇编:专题二十一+
- 回收
- 分配
- 原理
- 操作系统
- 内存
- Linux
- 管理
- 数据统计图在历史教学中的应用
- 变压器油界面张力测试仪 - 图文
- 零件订单供应管理系统数据库
- 信息系统的设计与实现作业在线
- 中央电大《组织行为学》课程教学大纲
- 机组冷态启动节点控制
- 浙江省平阳县第二中学2017届高三上学期期中考试化学试题含答案
- ERICSSON交换机入门
- 解密九江地王新风向标--誉江华府 - 图文
- 初三九年级体育中考训练计划(3.4)班
- 内审员考试练习题
- 2013年广东省普通高中学业水平考试模拟试卷(地理)4套 - 图文
- 技术分析文章精华
- 教材〔2017〕4号《中小学综合实践活动课程指导纲要》
- 半索动物门 脊索动物门圆口纲鱼纲 两栖纲爬行纲鸟纲哺乳纲练习 -
- 机关效能建设实施方案
- 教书育人
- 关于 XX 同志违纪问题的初步核实
- 合肥市政府投资建筑和市政工程施工总承包预选承包商名单
- 亲爱的党组织