Я пытаюсь инициализировать эти значения в начале моей программы. Я не получаю ожидаемые значения, поэтому я могу что-то не так с указателями.
struct TLBentry{
unsigned int physicalAddress;
unsigned int virtualAddress;
};
struct pageTableEntry{
char validFlag;
char dirty;
unsigned int physicalAddress;
};
memSys->virtMem = malloc( sizeof( int ) * sizeVM * pageSize );
memSys->tlb = malloc( sizeof(struct TLBentry) * sizeTLB );
memSys->pgTable = malloc( sizeof(struct pageTableEntry) * sizeVM );
for( int i=0; i < memSys->sizeTLB; i++ ){
struct TLBentry* entry = &(memSys->tlb[i]);
entry->virtualAddress = i;
entry->physicalAddress = i;
}
for( int i=0; i < memSys->sizeVM; i++ ){
memSys->pgTable[i].physicalAddress = i;
memSys->pgTable[i].validFlag = 0;
}
for( int i=0; i < memSys->sizePM; i++ ){
memSys->pgTable[i].physicalAddress = i;
memSys->pgTable[i].validFlag = 1;
}
printf("initialize %d\n", memSys->tlb[1].virtualAddress );
Оператор print должен быть "initialize 1", но он печатает "initialize 0"
Я не знаю, что происходит.