gpt4 book ai didi

c - 将结构体存储在数组中

转载 作者:行者123 更新时间:2023-11-30 17:47:20 28 4
gpt4 key购买 nike

我正在尝试编写一些代码,它模仿一个简单的 malloc 函数(用 C 语言编写),尽管它应该只控制大数组的内存,而不是实际的物理内存。为了控制“内存”,我想将元数据段存储在内存阵列中。 META 数据存储为结构体。我的问题是,如何正确地将结构存储在数组的字节中?在这里显示的示例中,我尝试在内存阵列的起始元素上存储一些初始元数据;但是我这样做的语法错误。

typedef struct _xMetaData{
size_t xSize;
int* piNextBlock;
int iBlockFree;
}xMetaData;

int8_t memory[ALLOCATE_SIZE];


// Pointer to struct
xMetaData* pxMetaPtr;

xMetaData xInitialData = {BLOCKSIZE, &memory[INITIAL_BLOCK_ADDRESS], BLOCK_FREE};
&memory[0] = xInitialData;

最佳答案

您需要将内存块转换为xMetaData:

*(xMetaData *) (&memory[0]) = xInitialData;

如果您使用结构来处理此类事情,您还应该注意结构填充(例如,确保ALLOCATE_SIZE使用sizeof(xMetaData)并且不是硬编码的长度,并确保始终使用结构访问内存。)

关于c - 将结构体存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18956554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com