Я получаю segfault во время выполнения по адресу:
Я пытаюсь построить эту модель кэш-памяти в C.
Итак, код компилируется нормально, но я получаю segfault во время выполнения.Я проследил это до этой строки:
cache->set[i]->block = (Block *) malloc( cache->numSets * sizeof( Block ) );
Я пытался создать Block как массив внутри Set struct.Но это порождает другие проблемы, а infact - ту же ошибку сегментации.
typedef struct CacheMemory* Cache;
typedef struct Set_* Set;
typedef struct Block_* Block;
struct Block_ {
int valid;
int tag; // int *tag;
int dirty;
};
struct Set_ {
int numBlocks;
Block *block;
};
struct CacheMemory {
<snip>
Set *set;
};
Cache cache;
cache = (Cache) malloc(sizeof ( struct CacheMemory ) );
cache->set = (Set *) malloc( numSets * sizeof( Set ) );
for (i=0; i<cache->numSets; i++) {
//for (j = 0; j < cache->blockSize; j=j+1) {
// Note: I get segfault at line below during runtime
cache->set[i]->block = (Block *) malloc( cache->numSets *sizeof( Block ) );
//cache->set[i]->block[j] = (Block_) malloc (sizeof(Block_) );
// }
}