c - 用于缓存模拟器的 malloc 两个结构
问题描述
typedef struct {
uint32_t valid_bit;
uint32_t tag;
uint32_t index;
uint32_t data[4];
} Block;
// Final cache structure
typedef struct {
Block* blocks;
} Cache;
Cache myCache;
myCache.blocks = (Block*) malloc(noOfBlocks * sizeof(Block));
for (int i = 0; i < noOfBlocks; i++) {
for (int j = 0; j < 4; j++){
myCache.blocks[i].valid_bit = 0;
myCache.blocks[i].tag = 0;
myCache.blocks[i].index = i;
myCache.blocks[i].data[j] = 0;
}
}
我不确定这是否应该使用 malloc。我是否也必须 malloc 我的数据 [] 以便以后访问它?
另外,这是如何初始化我的缓存吗?
提前致谢!
解决方案
循环中的前三个语句for
应该在外循环中:
for (int i = 0; i < noOfBlocks; i++) {
myCache.blocks[i].valid_bit = 0;
myCache.blocks[i].tag = 0;
myCache.blocks[i].index = i;
for (int j = 0; j < 4; j++) {
myCache.blocks[i].data[j] = 0;
}
}
还要确保在使用完内存后释放内存:
free(myCache.blocks);
除此之外还好。
我是否也必须 malloc 我的数据 [] 以便以后访问它?
不,数组不是动态分配的。
推荐阅读
- python - 合并和组合 2 列不同的数据框
- haskell - 无法使用单例库将类型级列表转换回值级
- r - 如何从图中排除 n\a 值?
- typescript - 量角器:如何获取 ngb-alert 的文本
- boost - boost::multi_array 默认是否初始化其内容?
- javascript - 如何从 if else 条件中获取多个值
- android - 在Android中将背景颜色更改为视图的有限区域
- azure - 我在 Azure .json 中的串联没有按预期工作
- php - 无法在 Windows 10 上安装 magento 2.2,缺少命令
- wordpress - Wordpress 城市定位器代码 woo-commerce。我的问题不同我需要城市定位器而不是商店定位器