操作系统 内存管理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同组同学学号:
#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>
#include <string.h>
int main(void)
{
char *str;
/* 为字符串申请分配一块内存 */
if ((str = (char *) malloc(20)) == NULL)
{
printf("Not enough memory to allocate buffer\n"); return(1); /* 若失败则结束程序 */
}
/* 复制 "Hello" 字符串到分配到的内存 */
strcpy(str, "My name is Li Caihong!");
/* 打印出字符串和其所在的地址 */
printf("String is %s\n Address is %p\n", str, str); /* 重分配刚才申请到的内存空间, 申请增大一倍 */
if ((str = (char *) realloc(str, 40)) == 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; }
在该程序中, 我将程序中的“Hello”改为“My name is Li Caihong!”首次调试出来的结果显示内存太小, 出现的结果有很多不认识的代码。
然后, 我将程序中的“10”和“20”分别改成“20”和“40”再进行调试, 得出结果截图如下:
注: 《实验内容及步骤》项目的内容如果较多, 可以加附页。
实验结果及心得:
虽然本次试验我的改编程序没有什么技术含量, 但是通过我仔细地阅读各个程序了解了他们的作用, 并且能很快的知道哪个地方是最终现实的结果, 结果的内存是有那个地方决定的。
我觉得这对我来说也是一个不小的收获, 为我未来更能编写出属于自己的程序打下了一个良好的基础。
虽然本次试验我的改编程序没有什么技术含量,但是通过我仔细地阅读各个程序了解了他们的作用,并且能很快的知道哪个地方是最终现实的结果,结果的内存是有那个地方决定的。
我觉得这对我来说也是一个不小的收获,为我未来更能编写出属于自己的程序打下了一个良好的基础。
教师评语:
成绩:
教师签字: 年月日
教师签字:年月日。