调整内存:
if((str=(char*)realloc(str,20))==NULL) { printf(“Not enough memory to reallocate buffer\\n”); exit(1); }
输出地址:
printf(“String is %s\\n Address is %p\\n”,str,str); 释放内存: free(str);
(2) LRU算法实现参考程序。 #include
#define M 4 #define N 17
#define Myprintf printf(\/*表格控制*/
typedef struct page { int num; /*记录页面号*/ int time; /*记录调入内存时间*/ }Page; /* 页面逻辑结构,结构为方便算法实现设计*/
Page b[M]; /*内存单元数*/
int c[M][N]; /*暂保存内存当前的状态:缓冲区*/ int queue[100]; /*记录调入队列*/ int K; /*调入队列计数变量*/
/*初始化内存单元、缓冲区*/ void Init(Page *b,int c[M][N]) { int i,j; for(i=0;i /*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/ int GetMax(Page *b) { int i; int max=-1; int tag=0; for(i=0;i /*判断页面是否已在内存中*/ int Equation(int fold,Page *b) { int i; for(i=0;i /*LRU核心部分*/ void Lru(int fold,Page *b) { int i; int val; val=Equation(fold,b); if (val>=0) { /* 此部分学生填写(此处可能有一条或多条语句) */ } else { /* 此部分学生填写(此处可能有一条或多条语句) */ } } /*主程序*/ void main() { int a[N]={1,0,1,0,2,4,1,0,0,8,7,5,4,3,2,3,4}; int i,j; start: } 说明:实际系统中往往不直接采用LRU算法作为页面置换算法,因为更新记录页面访问情况的数据项需要较多的开销,因此实际系统常使用LRU的近似算法。 6、实验报告 要求认真书写实验报告,报告的内容包括:实验目的、实验内容、实验步骤、实验结果等。 思考问题:申请得到的内存不释放会有什么结果? K=-1; Init(b, c); for(i=0;i /*结果输出*/ printf(\内存状态为:\\n\ Myprintf; for(j=0;j for(i=0;i Myprintf; printf(\调入队列为:\ for(i=0;i printf(\缺页次数为:m\\n缺页率:.6f\ printf(\ if(getche()=='y') goto start;