0

我正在尝试将 fifo 缓存实现到 C 程序中。我有一个结构:

struct cache{

int blockid;
int used;
char content[SIZE];
};

我做了一个指针数组,

struct cache **buffer[size];

在使用指定的块数量分配此缓存后,我无法找到存储给定块 ID 的缓存条目(void *get_cache_block(int id) 并返回缓存块。我不知道如何遍历我的数组指针。在缓存中插入一个新条目也是一个我需要帮助的函数!

提前感谢您的帮助。

4

1 回答 1

0

在您显示的代码中,您正在分配一个指向指针的指针数组,而不是指向结构的指针,缓存的声明应该是struct cache *buffer[size]. 查找具有给定 id 的缓存是一个简单的 for 循环,其要点是:

int i;
struct cache *cur;

for (i = 0, cur = buffer[0]; i < size; cur = buffer[++i]) {
    if (cur->blockid == id) {
        break;
    }
}

if (i < size) return cur;
else return 0;

函数 get_cache_block 应该返回 astruct cache *而不是 a,void *因为 void 指针指示未知类型。

此外,您可能希望使用环形缓冲区进行缓存,因为它具有在缓存已满时覆盖缓冲区中最旧条目的良好属性。希望这会有所帮助,祝你好运。

于 2013-09-26T01:20:58.597 回答