这里有点复杂。我正在尝试模拟页表,它涉及许多数据结构-特别是我需要创建一个结构数组,其中包含指向其他结构数组的指针(因为在定义时我不知道它们需要多长时间)是)。我试图从文件中打印出我提供的输入(我已经验证了im解析正确),并且它总是给出错误的输出。
作为第二个问题,是否有更好的方法来完成所有这些工作?请记住,稍后我需要将许多这些结构传递给函数,因此我认为动态内存将是最佳选择。
typedef struct PROCESS {
int num_vmas;
int pid;
struct VMA *vmalist;
} PROCESS;
typedef struct VMA {
int start_page;
int end_page;
int w_prctd;
int f_mapped;
} VMA;
PROCESS *pl[num_ps];
for (int i=0; i<num_ps; i++) {
PROCESS *proc = malloc(sizeof(PROCESS)); // Create individual process
int num_vmas = parse_num(inputptr);
VMA **vma_list = malloc(sizeof(VMA*) * num_vmas); // Create list of vmas
proc->num_vmas = num_vmas;
proc->pid = i;
proc->page_table = pagetable;
proc->vmalist = vma_list;
for (int j=0; j<num_vmas; j++) {
VMA *myvma = malloc(sizeof(VMA)); // Create individual vma
myvma = parse_vma(inputptr);
vma_list[j] = myvma; // Add VMA to list
}
pl[i] = proc; // Add process to list
}
printf("TESTING NOW:\n");
for (int i=0; i<num_ps; i++) {
printf("PID: %d\n", pl[i]->pid);
printf("Num VMAs: %d\n", pl[i]->num_vmas);
for (int j=0; j<pl[i]->num_vmas; j++) {
VMA *vma = pl[i]->vmalist[j];
printf("in-mem: %d %d %d %d\n", vma->start_page, vma->end_page,
vma->w_prctd, vma->f_mapped);
}
}