Я пытаюсь каждый раз заполнять массив указателей на структуру новой структурой.Проблема, которую я получаю, состоит в том, что мой массив указателей на структуру, кажется, заполняется указателями на ту же самую структуру.Я привык использовать другие языки, где я могу сказать новый, и он вызывает конструктор, который создает новые экземпляры, так что вы все равно можете использовать то же имя, но получить новый адрес.Вот мой код для структур:
struct table_entry {
_Bool valid; //probably not needed can just use check for null
_Bool mem;
int index; // will be number between 0-63
};
typedef struct{
int proc_id;
struct table_entry *pte[64];
} page_table ;
Здесь я пытаюсь создать новый экземпляр page_table, но все равно получаю тот же адрес: я думаю, что проблема в первых нескольких строках первого, еслигде я пытаюсь создать новый экземпляр структуры.
for (int i = 0; i < size; i++) {
if ((strcmp(words[i], "new") == 0)) {
page_table pt;
printf("address of pt:%d", (int) &pt);
pt.proc_id = atoi(words[i + 1]);
proceses[atoi(words[i + 1])] = &pt;
printf("new process: %s:%d\n", words[i],
proceses[atoi(words[i + 1])]->proc_id);
} else if ((strcmp(words[i], "switch") == 0)) {
printf("switching to process: %s\n", words[i + 1]);
int process = atoi(words[i + 1]);
page_table cur_pt = *proceses[process];
// change the current page table reference
printf("process ID%d: %d\n", process, cur_pt.proc_id);
} else if ((strcmp(words[i], "access") == 0)) {
// printf("accessing memory: %d\n", atoi(words[i + 1]) >> 10);
}
for (int i = 0; i <= size; i++) {
// printf("%s\n", words[i]);
}
}
Я искал, чтобы попытаться найти лучший способ справиться с этим, и я не совсем уверен, что я ищу,Я изучил анонимные структуры и попытался выделить память с помощью malloc.Похоже, я не нашел успеха ни в одном из этих подходов, хотя я не уверен, что делал их правильно.Спасибо за любую помощь и дайте мне знать, если вы хотите увидеть что-нибудь еще или у вас есть какие-либо вопросы.