【发布时间】:2017-08-31 03:48:41
【问题描述】:
typedef struct cache_line {
char valid;
mem_addr_t tag;
struct cache_line* next;
} cache_line_t;
typedef cache_line_t* cache_set_t;
typedef cache_set_t* cache_t;
/* The cache we are simulating */
cache_t cache;
void initCache()
{
cache = malloc (S * sizeof(cache_set_t));
for (int i = 0; i < S; i ++ ){
cache[i]= malloc(sizeof(cache_line_t));
cache_line_t *temp = *(cache+i);
temp -> valid = 0;
temp -> tag = 0;
cache_line_t* curr = *(cache+ i );
for (int j = 1; j < E; j++){
curr.next = malloc(sizeof(cache_line_t));
curr = curr.next;
curr.valid=0;
curr.tag=0;
}
curr.next = NULL;
}
}
所以我的脑袋在游动,试图记住指针和结构的所有细节,我已经有一段时间试图完成这个项目。我在这里要做的是在堆上分配一个这种结构的数组(一个链表),我一直遇到类型不匹配和诸如此类的问题(对不起,如果它很乱,我会继续尝试新事物并重新编译)。任何关于我哪里出错的帮助将不胜感激。
【问题讨论】:
-
类型定义指针有什么了不起的……真的吗?
-
@SouravGhosh - 收入保障。它使代码变得如此糟糕,以至于除了自己之外,没有人可以忍受调试它。
-
我不知道lol,骨架代码是这样来的,我也觉得很奇怪
-
@StoryTeller 我也怀疑对“自己”的有效性...:)
-
@genericmathstudent - 这不仅奇怪,而且有害。为您提供此代码的人认为他们在进行“抽象”,而实际上他们正在执行混淆。
标签: c struct heap-memory