C语言 将 malloc 用于指向结构的指针数组时的 Seg 错误



我正在尝试使用指向"较低级别"集结构的指针实现缓存结构;它应该模拟缓存。当我尝试在 initCache 函数中错误地定位缓存结构时,我遇到了一个 seg 错误。我读过其他帖子,我很确定这不是语法,但我是 C 的新手,所以我可能错误地使用了指针。我收到一个警告,说 L1cache 可能未初始化,我也检查了与此相关的帖子,但没有运气,尝试了对其他人有用的方法。

需要明确的是,缓存定义中的 **sets 应该是一个指针数组,其中数组中的每个指针都指向一个结构

缓存结构定义为:

/* Struct representing the cache */
struct cache{
    set **sets; /* Array of set pointers */
};

initCache 在 main 中被调用如下:

cache* L1cache;
initCache(L1cache, nSets, setSize);

initCache 的代码是:

void initCache(cache* c, int nSets, int setSize){
    int i;
    c->sets=malloc(nSets*sizeof(set*)); /* SEG FAULT HERE malloc space for array of pointers to each set       */
    for(i = 0; i < nSets; i++){
        c->sets[i]=malloc(sizeof(set)); /* malloc space for each set */
    initSet(c->sets[i],setSize);
}
    return;     
}

您需要初始化L1cache

cache *L1cache = malloc(sizeof (cache));

或者你可以把它声明为一个普通变量:

char L1cache;
initCache(&L1cache, nSets, setSize);

相关内容

  • 没有找到相关文章

最新更新