2013-09-23 96 views
0

我正在嘗試做一些代碼,它模仿一個簡單的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; 

回答

0

您需要的內存塊轉換爲xMetaData

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

你也應該知道結構的填充,如果您使用的是結構爲這種事情(例如,使當然ALLOCATE_SIZE使用sizeof(xMetaData)而不是硬編碼的長度,並確保您始終使用該結構訪問內存。)