在C中初始化结构的数组成员

时间:2017-04-30 20:51:31

标签: c

我实现了一个(直接映射)缓存,其中包含一些行(每个包含一个int[ROW_SIZE]数组),简化如下:

struct Cache {
    int data[ROWS][ROW_SIZE];
};

假设struct Cache* cache;在任何函数之外,我在函数内初始化缓存:

cache = malloc(sizeof(struct Cache));
memset(cache -> data, 0, sizeof(cache -> data[0][0]) * ROWS * ROW_SIZE);

现在,我想在以下函数中设置和设置缓存行:

void write_to_row(int row, int* new_data) {
    memcpy(cache -> data[row], new_data, ROW_SIZE);
}

int* read_from_row(int row) {
    return cache -> data[row];
}

我从未malloc data成员struct Cache,所以我想知道这段代码是否真的会在cache -> data中保留更改,即使它目前没有抛出错误。

当我将struct Cache* cache;放在任何函数之外的文件顶部时,编译器是否自动将{... 1}}成员的数据留在内存中?

如果我使用了以下data

,您的回答会有所不同吗?
struct

谢谢!

0 个答案:

没有答案