イム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!");
}
これは正常に動作し、今私は16個の要素
cache->set = malloc(16 * sizeof(cache->set));
//same error check as above here, just left our for precision of question
と構造体セットの配列のメモリを割り当てます
また、これは、今、私は再びこの作品セット
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個の要素を持つset構造体の配列が保持されます。これらの各セット要素には、2つの要素を持つブロック構造体の配列が必要です。
あなたのいずれかが私を助けてくれることを願っています!
こんにちは!ご返事ありがとうございます! 私はちょっと混乱しています。 キャッシュの代わりに*キャッシュを指定する理由を説明できますか? また、cache-> set->ブロックは、struct block_tの2つの要素の配列でなければなりません。メモリを割り当てるべきではありませんか? – nichos