c - C 结构数组,包含指向结构数组的指针
问题描述
这里有点复杂。我正在尝试模拟一个页表,它涉及很多数据结构 - 特别是我需要创建一个结构数组,其中包含指向其他结构数组的指针(因为我在定义时不知道他们需要多长时间是)。我正在尝试打印出我从文件中提供的输入(我已经验证了我的解析正确),但它总是给出错误的输出。
作为第二个问题,是否有更好的方法来完成这一切?请记住,稍后我需要将许多这些结构传递给函数,因此我认为动态内存将是最佳的。
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);
}
}
解决方案
推荐阅读
- python-3.x - 如何在Python中计算列的段中的特定数字
- apache-spark - org.apache.spark.SparkException:无法执行用户定义的函数(如何找到有问题的 udf)
- machine-learning - 机器学习中的多项式和多项式回归有什么区别?
- c++ - 如何在 C++ 中使用 <<= 运算符格式化链表
- amazon-web-services - 如何访问 SNS HTTPS 订阅端点中的消息属性
- javascript - api调用多次时有时会取消AJAX请求
- javascript - 节点中的sqlite3 uri语法
- excel - 使用公式从具有不同工作簿名称的不同工作表中获取值
- swift - 从 UIButton 更改后的 UIBarButtonItem 错误
- ember.js - Route 上的数据未从 API 重新加载/重新获取