操作系统原理-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字节空间未使用。
心得体会
本实验虽然相对上一个实验提供的代码短很多,但是所涉及的知识覆盖面较广,在做实验的过程中也学到了不少知识。
正在阅读:
我收获了喜悦作文500字06-19
最新部编人教版道德与法治二年级下册:05 健康游戏我常玩 教学设计 教案09-07
咨询工程师《工程咨询概论》真题及答案04-09
钢轨焊接工(铝)抽考题库07-10
2018年全国卷英语高考试题(含答案)01-04
中国报纸投稿邮箱06-21
《工程经济学》课程题库试题10-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 回收
- 分配
- 原理
- 操作系统
- 内存
- Linux
- 管理
- 数据统计图在历史教学中的应用
- 变压器油界面张力测试仪 - 图文
- 零件订单供应管理系统数据库
- 信息系统的设计与实现作业在线
- 中央电大《组织行为学》课程教学大纲
- 机组冷态启动节点控制
- 浙江省平阳县第二中学2017届高三上学期期中考试化学试题含答案
- ERICSSON交换机入门
- 解密九江地王新风向标--誉江华府 - 图文
- 初三九年级体育中考训练计划(3.4)班
- 内审员考试练习题
- 2013年广东省普通高中学业水平考试模拟试卷(地理)4套 - 图文
- 技术分析文章精华
- 教材〔2017〕4号《中小学综合实践活动课程指导纲要》
- 半索动物门 脊索动物门圆口纲鱼纲 两栖纲爬行纲鸟纲哺乳纲练习 -
- 机关效能建设实施方案
- 教书育人
- 关于 XX 同志违纪问题的初步核实
- 合肥市政府投资建筑和市政工程施工总承包预选承包商名单
- 亲爱的党组织