임 C와 캐시를 만들려고 노력하지만, 나는메모리 할당 구조
struct block{
int validBit;
char *tag;
}
typedef struct block block_t;
Struct set{
block_t *blocks;
}
typedef struct set set_t;
Struct cache{
//Some other variables but not important for this question
set_t *set;
}
typedef struct cache cache_t;
그래서 내가 할당 구조의 마지막 배열에 메모리를 할당에 문제가 있어요 setupCache() 함수에서 이와 같은 캐시 메모리
cache_t *cache = NULL;
cache = malloc(sizeof(cache));
if(cache == NULL){
fprintf(stdout, "Could not allocate memory for cache!");
}
이 이제 I 16 개 요소
cache->set = malloc(16 * sizeof(cache->set));
//same error check as above here, just left our for precision of question
,536 구조체와 집합의 배열의 메모리를 할당 잘 작동
이 또한 지금은 다시이 작품 설정
for(i = 0; i < 16; i++){
cache->set->blocks = malloc(2 * sizeof(cache->set->blocks));
내에서 블록 배열에 대한 메모리를 할당하지만, 여기에 문제가
cache->set->blocks[i] = malloc(sizeof(block_t));
이 나에게 오류를 줄 온다, 작동 : 호환되지 않는 유형의 때를 'void *'유형에서 'block_t'유형에 할당
내가 뭘 잘못하고 있는지, 아마 어리석은 짓인지는 모르겠다.
이것은 다음과 같아야합니다 : 캐시에는 16 개의 요소가있는 집합 struct의 배열이 들어 있으며, 각 set 요소에는 2 개의 요소가있는 block struct 배열이 있어야합니다.
여러분 중 누구라도 나를 도울 수 있기를 바랍니다.
안녕하세요! 답장 해주셔서 매우 감사합니다! 나는 약간 혼란 스럽다. 캐시 대신 * 캐시 크기를 제공해야하는 이유를 설명해 주시겠습니까? 또한 cache-> set-> blocks는 struct block_t의 2 요소의 배열이어야합니다. 그 사람들이 기억을 할당 받아야하지 않습니까? – nichos