我很困惑,不确定我所做的是否正确......
typedef struct Node {
size_t tag;
struct Node *next;
int valid;
} Node;
typedef struct caches {
struct Node *tag;
int hits;
int misses;
int Coldmisses;
} caches;
这些是我的结构.....
我创建了一个方法......
caches* L1Cache() {
caches *l1 = malloc(numberofsets1*sizeof(caches));
if (numberofsets1 != 1) {
numberofsets1 = L1Size/(blocksize*L1assoc);
}
l1->hits = 0;
l1->misses = 0;
l1->tag->valid = 0;
l1->Coldmisses = 0;
return l1;
}
在我的主要部分,我称之为caches* L1 = L1Cache()
;
然后我可以使用像这样的L1吗?
我也得到SEGEMENTATION FAULT“l1-> tag-> valid = 0;” IDK为什么?请帮忙
if (L1[indexoffset].tag->valid = 0) {
L1[indexoffset].tag->tag = tag;
L1[indexoffset].tag->valid = 1;
}
答案 0 :(得分:0)
如果我在
之后l1->tag=malloc(sizeof(Node));
中添加caches* L1Cache()
该怎么办? 在l1->misses = 0;
- user3100209
它应该工作。不要忘记在最后释放它或者更改指针(l1->tag=othernode
)。 - 弗朗西斯