- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同组同学学号:
同组同学姓名:
实验日期: 交报告日期:
实验(No. 4 )题目:编程与调试:内存管理
实验目的及要求:
实验目的:
操作系统的发展使得系统完成了大部分的内存管理工作,对于程序员而言,这些内存管理的过程是完全透明不可见的。因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需的内存。在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存。其它一概无需过问。本章的3个实验程序帮助同学们更好地理解从程序员的角度应如何使用内存。
实验要求:
练习一:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果,分析遇到的问题和解决方法。
练习二:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果。
练习三:用vim编辑创建下列文件,用GCC编译工具,生成可调试的可执行文件,记录并分析执行结果。
改编实验中的程序,并运行出结果。
实验设备:多媒体电脑
实验内容以及步骤:
在虚拟机中编写好以下程序:
#include stdio.h #include string.h #include malloc.h
int main(void)
{
char *str;
/* 为字符串申请分配一块内存 */
if ((str = (char *) malloc(10)) == NULL)
{
printf(Not enough memory to allocate buffer\n);
return(1); /* 若失败则结束程序 */
}
/* 拷贝字符串“Hello”到已分配的内存空间 */
strcpy(str, Hello);
/* 显示该字符串 */
printf(String is %s\n, str);
/* 内存使用完毕,释放它 */
free(str);
return 0;
}
调试过后得出的结果截图如下:(由图可看出我将此程序以aa.c为文件名保存,调试后出现aa1文件,调试结果出现语句“String is Hello”)
#include stdio.h
#include malloc.h
#include string.h
int main(void)
{
char *str; /* 为字符串申请分配一块内存 */
if ((str = (char *) malloc(10)) == NULL)
{
printf(Not enough memory to allocate buffer\n);
return(1); /* 若失败则结束程序 */
} /* 复制 Hello 字符串到分配到的内存 */
strcpy(str, Hello); /* 打印出字符串和其所在的地址 */
printf(String is %s\n Address is %p\n, str, str); /* 重分配刚才申请到的内存空间,申请增大一倍 */
if ((str = (char *) realloc(str, 20)) == NULL) { printf(Not enough memory to allocate buffer\n); return(1); /* 监测申请结果,若失败则结束程序,养成这个好习惯 */
} /* 打印出重分配后的地址 */
printf(String is %s\n New address is %p\n, str, str); /* 释放内存空间 */
free(str);
return 0;
}
调试过后得出结果截图如下:
#include stdio.h
#include alloca.h
void test(int a)
{
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);
} /* 函数退出,内存自动释放,无需干预 */
void main()
{
/* 申请一块256字节大小的内存空间,观察输出情况 */
test(256);
/* 再申请一块更大内存空间,观察输出情况 */
test(16384);
}
调试结果截图如下:
根据练习二改编程序如下:
#include stdio.h
#include malloc.h
#includ
您可能关注的文档
- 中学物理实验报告 徐婷婷.doc
- 《大学计算机Ⅰ》实验报告实验三.doc
- 实验报告大学英语.doc
- 舞蹈社团活动计划.doc
- 东汉的兴衰_4完整版.ppt
- 《济南的冬天》优秀公开课课件PPT.ppt
- 注意分配实验报告.doc
- 提高食堂满意度的办法.doc
- 弱电工程施工方案.doc
- arcgis实验实验报告.doc
- 《2025年设计软件市场报告:创意设计需求增长与AI辅助设计技术应用》.docx
- 2025年数字孪生助力城市气候变化适应策略.docx
- 《2025年智能农机技术发展现状及农业机械化率提升报告》.docx
- 2025年冷链快递技术创新与商业价值分析报告.docx
- 2025年折叠屏技术消费电子市场竞争格局分析.docx
- 2025年企业人力资源管理系统发展趋势预测.docx
- 2025年金融风险管理师债券市场风险与信用利差分析专题试卷及解析.pdf
- 《2025年体育培训行业调研报告:青少年篮球专项技能培训市场机遇分析》.docx
- 2025年电视媒体行业研究互动电视发展趋势.docx
- 2025年金融风险管理师无担保融资与担保融资风险暴露专题试卷及解析.pdf
原创力文档


文档评论(0)