下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
同组同学学号:同组同学姓名:实验日期: 交报告日期:实验(No.4)题目:编程与调试:内存管理实验目的及要求:实验目的:操作系统的发展使得系统完成了大部分的内存管理工作,对于程序员而言,这些内存管理的过程是完全透明不可见的。因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需的内存。在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存。其它一概无需过问。本章的3个实验程序帮助同学们更好地理解从程序员的角度应如何使用内存。实验要求:练习一:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果,分析遇到的问题和解决方法。练习二:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果。练习三:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果。改编实验中的程序,并运行出结果。实验设备:多媒体电脑实验内容以及步骤:在虚拟机中编写好以下程序:#include<stdio.h>#include<string.h>#include<malloc.h>intmain(void){char*str;/*为字符串申请分配一块内存*/if((str=(char*)malloc(10))==NULL){printf("Notenoughmemorytoallocatebuffer\n");return(1);/*若失败则结束程序*/}/*拷贝字符串“Hello”到已分配的内存空间*/strcpy(str,"Hello");/*显示该字符串*/printf("Stringis%s\n",str);/*内存使用完毕,释放它*/free(str);return0;}调试过后得出的结果截图如下:(由图可看出我将此程序以aa.c为文件名保存,调试后出现aa1文件,调试结果出现语句“StringisHello”)#include<stdio.h>#include<malloc.h>#include<string.h>intmain(void){char*str;/*为字符串申请分配一块内存*/if((str=(char*)malloc(10))==NULL){printf("Notenoughmemorytoallocatebuffer\n");return(1);/*若失败则结束程序*/}/*复制"Hello"字符串到分配到的内存*/strcpy(str,"Hello");/*打印出字符串和其所在的地址*/printf("Stringis%s\nAddressis%p\n",str,str);/*重分配刚才申请到的内存空间,申请增大一倍*/if((str=(char*)realloc(str,20))==NULL){printf("Notenoughmemorytoallocatebuffer\n");return(1);/*监测申请结果,若失败则结束程序,养成这个好习惯*/}/*打印出重分配后的地址*/printf("Stringis%s\nNewaddressis%p\n",str,str);/*释放内存空间*/free(str);return0;}调试过后得出结果截图如下:#include<stdio.h>#include<alloca.h>voidtest(inta){char*newstack;/*申请一块内存空间*/newstack=(char*)alloca(len);if(newstack)/*若成功,则打印出空间大小和起始地址*/printf("Alloca(0x%X)returned%p\n",len,newstack);else/*失败则报告错误,我们是做实验,目前无需退出*/printf("Alloca(0x%X)failed\n",len);}/*函数退出,内存自动释放,无需干预*/voidmain(){/*申请一块256字节大小的内存空间,观察输出情况*/test(256);/*再申请一块更大内存空间,观察输出情况*/test(16384);}调试结果截图如下:根据练习二改编程序如下:#include<stdio.h>#include<malloc.h>#include<string.h>intmain(void){char*str;/*为字符串申请分配一块内存*/if((str=(char*)malloc(20))==NULL){printf("Notenoughmemorytoallocatebuffer\n");return(1);/*若失败则结束程序*/}/*复制"Hello"字符串到分配到的内存*/strcpy(str,"MynameisLiCaihong!");/*打印出字符串和其所在的地址*/printf("Stringis%s\nAddressis%p\n",str,str);/*重分配刚才申请到的内存空间,申请增大一倍*/if((str=(char*)realloc(str,40))==NULL){printf("Notenoughmemorytoallocatebuffer\n");return(1);/*监测申请结果,若失败则结束程序,养成这个好习惯*/}/*打印出重分配后的地址*/printf("Stringis%s\nNewaddressis%p\n",str,str);/*释放内存空间*/free(str);return0;}在该程序中,我将程序中的“Hello”改为“MynameisLiCaihong!”首次调试出来的结果显示内存太小,出现的结果有很多不认识的代码。然后,我将程序中的“10”和“20”分别改成“20”和“40”再进行调试,得出结果截图如下:注:《实验内容及步骤》项目的内容如果较多,可以加附页。实验结果及心得:虽然本次试验我的改编程序没有什么技术含量,但是通过我仔细地阅读各个程序了解了他们的作用,并且能很快的知道哪个地方是最终现实的结果,结果的内存是有那个地方决定的。我觉得这对我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作述职报告3篇
- 二零二五年度绿色环保广告字制作与安装服务合同3篇
- 2025年度跨行业员工借调与资源共享合作协议3篇
- 2025年度年度劳动争议调解律师委托协议终止书3篇
- 2025年度无人机农业病虫害防治与智慧农业平台合同3篇
- 2025年度农庄租赁与农业资源整合合同3篇
- 二零二五年度兽医疾病防控中心兽医聘用协议3篇
- 二零二五年度月嫂服务满意度评价及改进合同2篇
- 二零二五年度化学论文版权转让及国际学术交流合同3篇
- 2025年度教育资源共享合作协议书模板集3篇
- 品质异常处理单
- 2019年国考行测真题完整版答案解析图文(地市级)word版
- 市政基础设施工程给水排水管道工程实体质量检查记录
- 《中华人民共和国职业分类大典》电子版
- 施工现场铁皮围挡承包合同
- 管理学案例分析(超全有答案)(已处理)
- ICU病人早期康复-ppt课件
- 药品开发与上量-宿家荣
- 北京海淀区初一上数学期末试题(带标准答案)_
- 化工原理课程设计空气中丙酮的回收工艺操作
- 厂房施工总结报告
评论
0/150
提交评论