将struct存储在数组中

时间:2013-09-23 10:05:27

标签: c arrays

我正在尝试制作一些代码,它模仿一个简单的malloc函数(在C中),虽然它应该只控制一个大数组的内存,而不是实际的物理内存。为了控制“内存”,我想将META数据段存储在内存阵列中。 META数据存储为结构。 我的问题是,如何正确地将结构存储在数组的字节中?在这里显示的示例中,我尝试将一些初始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;

1 个答案:

答案 0 :(得分:0)

您需要将内存块转换为xMetaData

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

如果你正在使用结构来处理这类事情,你也应该知道结构填充(例如,确保ALLOCATE_SIZE使用sizeof(xMetaData)而不是硬编码长度,并确保你总是使用struct访问内存。)