我是C / C ++的新手,所以我知道这个问题可能是微不足道的,但我不明白如何继续。我已经分配了每个512字节的内存块,因此(Sector是一个大小为512字节的结构):
char* block = (char *) malloc (sizeof(Sector));
我有另一个128字节大小的结构:
typedef struct inode {
int fileSize;
int fileType;
int* blockPointer[30];
} inodeFile;
我想要做的是在块上覆盖此结构。我需要每个块包含4个inode结构,但是每个结构都可能没有任何与之关联的值,直到程序中的稍后。例如:
((*inodeFile) block)->fileSize = 10;
如果我理解正确,这是将指针块的前4个字节设置为fileSize。我会继续为结构的每个字段执行此操作。
我的问题是,我如何为4种不同的inode做到这一点?由于有4个不同的inode,如何为不同的结构返回每个字段的值?似乎只是说block-> fileSize不起作用,因为最多可以有四种不同的文件大小。
答案 0 :(得分:0)
您可以使用union
覆盖扇区上的块。因为字段是int
类型或指针或大小512,所以只要自然大小为32位,就不应该存在对齐问题。
typedef struct {
int fileSize;
int fileType;
int* blockPointer[30];
} inode;
typedef union {
unsigned char bytes[512];
inode block[4];
} sector;
int main()
{
sector thisec;
thisec.bytes[511] = 0;
thisec.block[0].fileSize = 10;
return 0;
}