【发布时间】:2021-04-07 10:22:18
【问题描述】:
结构如下:
typedef struct PageEntry { //Node
unsigned int page_number;
char mode;
int count, R;
struct PageEntry *next;
}PE;
typedef struct Element {
int val;
PE* pe;
}Element;
typedef struct PageTable {
int p_faults, reads, writes, disk_writes, maxFrames, usedFrames;
char* algorithm;
Element* el;
}PT;
我尝试删除第一个节点的代码在这里。
PE *cur = pt->el[pos].pe;
PE *prev =NULL, *temp = cur;
if(cur->count == min){ //head node
if(cur->mode == 'W'){
pt->disk_writes++;
}
if (cur->next == NULL) {
memset(cur, 0, sizeof(PE));
free(pt->el[pos].pe);
cur = NULL;
}
else {
cur = temp->next;
free(temp);
}
【问题讨论】:
-
删除列表第一个元素时,需要将页表改为指向第二个元素。
-
你刚刚分配了
cur,你没有更新页表。